使用ffmpeg直接内嵌DVB图形字幕(压字幕进视频)
1、搜索Zeranoe ffmpeg下载ffmpeg windows版本:
可以选择Static或者Shared版本来下载。

2、下载完成并解压后,双击ff-prompt.bat即可使用,或者使用cmd的cd命令进入ffmpeg的路径,也是一样可以用的。大家可以先看看ffmpeg一些基本用法。
如果不了解ffmpeg的话,也可以先百度一下看介绍。

1、好了 下面进入正题,如何用ffmpeg内嵌DVB字幕呢?其实很简单,只需要ffmpeg里一个叫overlay的滤镜。
在这里我引用ffmpeg.org网站的例子:
ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map "[v]" -map 0:a <output options> output.mkv
这里的例子用到的是mkv,当然ts也是没问题的。
下面是应用效果:


2、当然我们也可以对字幕进行一些处理,例如缩放:


3、移动位置(y轴向上移动500像素):


1、如果觉得这样还不够方便的话,可以做成bat批处理的形式,就像这样:
然后保存在与ffmpeg.exe同一文件夹里,就可以直接拖ts进去bat压制了。


2、下面提供自用的两个bat
(需自行用记事本等软件另存为bat):
第一个(输出720P倍帧 字幕缩放为4:3 仅适合1080i的视频输入):
ffmpeg -i "%~dp1%~nx1" -c:v libx264 -crf 22 -x264opts force-cfr=1 -preset medium -vsync cfr -filter_complex idet,bwdif=1:deint=interlaced[v1],[0:s:0]scale=w=1440:h=1080:flags=lanczos[sub],[v1][sub]overlay=x=240:shortest=1[v2],[v2]scale=w=1280:h=720:flags=lanczos[video],aresample=async=1000 -map [video] -map 0:a -c:a aac -s 1280*720 -aspect 16:9 -f matroska "%~dp1%~nx1.mkv"
pause
第二个(输出720P倍帧 字幕不缩放):
ffmpeg -i "%~dp1%~nx1" -c:v libx264 -crf 22 -x264opts force-cfr=1 -preset medium -vsync cfr -filter_complex idet,bwdif=1:deint=interlaced[v1],[v1][0:s:0]overlay=shortest=1[v2],[v2]scale=w=1280:h=720:flags=lanczos[video],aresample=async=1000 -map [video] -map 0:a -c:a aac -s 1280*720 -aspect 16:9 -f matroska "%~dp1%~nx1.mkv"
pause
3、如果还是喜欢可开关的字幕,那可以使用以下这个bat:
ffmpeg -i "%~dp1%~nx1" -c:v libx264 -crf 22 -x264opts force-cfr=1 -preset medium -vsync cfr -filter_complex [0:v]bwdif=1:deint=all[v1],aresample=async=1000 -c:s copy -map [v1] -map 0:a -map 0:s -c:a aac -s 1280*720 -aspect 16:9 -f mpegts "%~dp1%~nx1.ts"
pause
这个对视音频都进行了压制,但字幕是保存原样的,可开可关。
