【问题标题】:How to write a filter for ffmpeg that burn subtitles using a subtitle stream directly如何为ffmpeg编写一个直接使用字幕流刻录字幕的过滤器
【发布时间】:2014-03-20 19:01:12
【问题描述】:

假设我有一个带有视频流、音频流和字幕流的 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 使用的过滤器,而不是关于使用 ffmpeg 命令行,因为看起来没有合适的命令行。我很确定这是正确的地方。
  • 嗨。请再次阅读我之前的评论。
  • 好的,我刚刚编辑了我的问题以使我的需求更准确。

标签: ffmpeg


【解决方案1】:

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

 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

【讨论】:

  • 已经尝试过 :) 但是如果字幕编解码器不是基于图片的,它现在看起来可以工作了。
  • 我会试着找一个小文件。但是任何带有 ASS 或 SRT 字幕流的 MKV 都是不错的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多