ffmpeg设置字幕轨道为默认值

blö*_*örk 15 video ffmpeg subtitle

通过添加.ass字幕跟踪与ffmpeg的一个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
Run Code Online (Sandbox Code Playgroud)

请注意,我想保留.ass字幕格式,而不是将字幕转换为mov_text,如同在类似问题中建议: 如何使用ffmpeg设置默认流

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

mkvpropedit output.mkv --edit track:s1 --set flag-default=1
Run Code Online (Sandbox Code Playgroud)

但是有可能直接用ffmpeg做到这一点吗?

小智 19

我认为根据这个补丁,这现在是可能的.至少对我来说它适用于:

ffmpeg -i in.mp4 -i in.srt -c copy -disposition:s:0 default out.mkv
Run Code Online (Sandbox Code Playgroud)

注意s-disposition:s:0这种情况下代表字幕,而不是.通过索引使用选择第二个蒸汽-disposition:1.

  • 从v.3开始,`ffmpeg`已经实现了`-disposition`但尚未记录. (3认同)
  • `-disposition` 最近已被记录。 (3认同)

小智 8

您可以使用'强制'而不是默认来强制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
Run Code Online (Sandbox Code Playgroud)

  • @RocketNuts:第一个“s”代表“stream”,第二个代表“subtitle”。ffmpeg 的“-map_metadata”开关的文档对此进行了描述。(不过,这是针对“-metadata”的。根据文档,我认为对“-disposition”这样做是不正确的。) (3认同)
  • 谢谢,这很好用。问题:为什么使用两次“s”字幕标识符,即“-disposition:s:s:0”而不是“-disposition:s:0”?尝试完全理解您的语法。 (2认同)