多语言展示
当前在线:935今日阅读:86今日分享:14

使用ffmpeg直接内嵌DVB图形字幕(压字幕进视频)

网络上提取DVB字幕的教程,需要使用到的软件非常多,步骤比较繁琐,而且将字幕提取出来,到最后也还是要再封进去或者内嵌,很麻烦。今天就教大家如何使用ffmpeg工具直接内嵌图形字幕。
工具/原料
1

FFmpeg Windows版本

2

电脑

方法/步骤
1

搜索Zeranoe ffmpeg下载ffmpeg windows版本:可以选择Static或者Shared版本来下载。

方法/步骤2
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.mkv这里的例子用到的是mkv,当然ts也是没问题的。下面是应用效果:

2

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

3

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

方法/步骤3
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这个对视音频都进行了压制,但字幕是保存原样的,可开可关。

注意事项

如果不太熟悉windows命令行的操作,可以先学习一下

推荐信息