使用 ffmpeg 禁用默认字幕轨道

KrL*_*ler 3 ffmpeg

我正在创建一个包含 4 个不同文件的 MKV 容器:

  • 视频.mp4
  • 音频_en.mp4
  • 音频_es.mp4
  • 字幕.ass

为此,我使用以下ffmpeg脚本:

ffmpeg -i video.mp4 -i audio_es.mp4 -i audio_en.mp4 -i subtitles.ass \
-map 0:v -map 1:a -map 2:a -map 3:s \
-metadata:s:a:0 language=spa \
-metadata:s:a:1 language=eng \
-metadata:s:s:0 language=spa -disposition:s:0 -default \
-default -c:v copy -c:a copy -c:a copy -c:s copy result.mkv
Run Code Online (Sandbox Code Playgroud)

看起来result.mkv很棒,一切都按预期工作,除了一件事:字幕仍然设置为默认轨道,因此 VLC 等播放器会自动显示它们。我已经尝试了很多不同的方法来避免旗帜发生这种情况disposition,但我无法让它发挥作用。

我应该如何修改脚本以使 MKV 的字幕轨道不被标记为default

提前致谢!

llo*_*gan 7

对于 Matroska ( .mkv) 输出,请使用-default_mode以下选项:

ffmpeg -i video.mp4 -i audio_es.mp4 -i audio_en.mp4 -i subtitles.ass \
-map 0:v -map 1:a -map 2:a -map 3:s \
-metadata:s:a:0 language=spa \
-metadata:s:a:1 language=eng \
-metadata:s:s:0 language=spa \
-default_mode infer_no_subs \
-c copy result.mkv
Run Code Online (Sandbox Code Playgroud)

此选项需要 FFmpeg 4.3 或更高版本,或者使用当前 git master 分支的构建。