如何为ffmpeg编写一个过滤器,直接使用字幕流来刻录字幕

时间:2014-03-19 14:50:38

标签: ffmpeg

假设我有一个带有视频流,音频流和字幕流的MKV。

我想直接从字幕流中将这个副标题刻录到我的视频中。

到目前为止,这是我的命令行:

ffmpeg.exe -i "MyMovie.mkv" -map 0:0 -map 0:1 -vf subtitles=sub.srt out.mkv

到目前为止一切顺利。但是,我的字幕在电影里面,我需要先提取它们。我用过这个:

ffmpeg.exe -i "MyMovie.mkv" -f srt sub.srt

但是这个操作太长了:在我的电脑上用于2.5Go MKV约25秒。我需要更快的东西,因为我需要尽快开始将输出流式传输到应用程序。 (我没有提到我用来正确实现此流式传输的其他命令行参数,因为我的问题与此无关。)

我知道不可能像这样直接获取流:

ffmpeg.exe -i "MyMovie.mkv" -map 0:0 -map 0:1 -vf subtitles=[0:s:0] out.mkv

但这是我喜欢的东西。

编辑:

但我已经知道这种命令行不存在。 (但如果我错了,请告诉我。)

现在,我想自己编写这种过滤器,并用它编译ffmpeg。 但我不知道从哪里开始。

任何人都可以帮助我开始吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您正在寻找“基于图片”模式

 ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a <output options> output.mkv

这里我们在第一个视频(0:v)上映射第一个(0:s)字幕流

详细介绍了here