【问题标题】:ffmpeg set subtitles track as defaultffmpeg 将字幕轨道设置为默认值
【发布时间】:2015-01-13 10:11:34
【问题描述】:

通过使用 ffmpeg 将 .ass 字幕轨道添加到 mkv 视频中,它不会被设置为默认轨道,因此在播放时您必须手动打开字幕。是否可以为字幕轨道设置默认标志?

使用的ffmpeg命令:

ffmpeg -i video.mp4 -i subtitles.ass -c:v libx264 -preset veryslow \
 -pix_fmt yuv420p10le -c:a copy -c:s copy output.mkv

请注意,我想保留 .ass 字幕格式,不将字幕转换为 mov_text 就像在这个类似问题中建议的那样: How to set default streams with ffmpeg

之后可以使用 mkvpropedit 设置默认标志,如下所示:

mkvpropedit output.mkv --edit track:s1 --set flag-default=1

但是是否可以直接用 ffmpeg 做到这一点?

【问题讨论】:

  • SO 可能是这个问题的错误站点,但问题本身是有效的。我有同样的问题。

标签: video ffmpeg subtitle


【解决方案1】:

我认为根据this patch,这现在是可能的。至少对我来说它适用于:

ffmpeg -i in.mp4 -i in.srt -c copy -disposition:s:0 default out.mkv

注意-disposition:s:0 中的s 在这种情况下代表subtitle 而不是stream。要按索引选择第二个蒸汽,请使用-disposition:1。

【讨论】:

  • 从 v.3 开始,ffmpeg 已经实现了 -disposition,但尚未记录。
  • -disposition 最近被记录在案。
【解决方案2】:

您可以使用'forced'而不是默认来强制vlc播放它

ffmpeg -f mp4 -i outfile.mp4 -f srt -i VTS_07_0.EnglishV2.srt -c:v copy -c:a copy -metadata:s:a:0 language=Japanese -c:s mov_text -metadata:s:s:0 language=English -disposition:s:s:0 forced mix.mp4

【讨论】:

  • 谢谢,这很好用。问:为什么你使用s字幕标识符两次,即-disposition:s:s:0而不是-disposition:s:0?试图完全理解你的语法。
  • @RocketNuts:第一个s 用于“流”,第二个用于subtitle。这在 ffmpeg 的 -map_metadata 开关的文档中有所描述。 (不过,这是针对 -metadata 的。根据文档,我认为对 -disposition 这样做是不正确的。)
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2014-05-29
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多