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

标签 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。
但我不知道从哪里开始。

谁能帮我开始?

谢谢

最佳答案

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

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

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

详细描述 here

关于ffmpeg - 如何为ffmpeg编写一个直接使用字幕流刻录字幕的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509619/

相关文章:

video - ffplay - 两个视频 (.mp4),一个显示屏,只需几秒钟即可将它们一起显示

ruby-on-rails - 从图像列表中为视频添加 ken burn 效果

python - 使用 ffmpeg 的图像到电影功能,是否可以在一段时间内传递帧而不是一次全部传递?

ffmpeg - 建议与 Mpeg-dash、VBR 或 CBR 一起使用什么?

ffmpeg - 如何使用 FFmpeg 获取视频前 x 分钟的大小?

android - FFmpegFrameRecorder 在录制时添加文本/图像

video - 如何将所有视频帧替换为一张图像?

node.js - 是否可以将 ffmpeg 之类的东西捆绑到 Node 应用程序中?

c++ - 使用网络摄像头时 ffmpeg 启动太慢(与使用 OpenCV 相同)

java - 编解码器参数不正确,无法写入输出文件 : FFMPEG - Android 的 header