Ffmpeg

如何使用 ffmpeg 設置預設字幕

  • February 13, 2022

我從影片、音頻和文件創建了一個 mp4.srt文件。

ffmpeg -i video.mp4 -i audio.m4a -i sub.srt -map 0:0 -metadata:s:v:0:0 語言=eng -map 1:0 -metadata:s:a:0:0 語言=eng -map 2:0 -metadata:s:s:0:0 語言=eng -c copy -scodec mov_text out.mp4

它工作正常,但預設情況下不顯示字幕。有沒有辦法預設顯示字幕?

您可以使用MP4Box 0.6.2-DEV-rev453(2016 年 5 月)或更高版本來執行此操作:

mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4

這會將輸出文件中的字幕流標記為強制。但是,此標記只能從 VLC 3.0.0-20161101(2016 年 11 月)開始被辨識。


我在 FFmpeg 郵件列表上看到有關為 FFmpeg 實現處置的更新檔的提及:

ffmpeg -i xr.mp4 -i xr.en.srt -c copy -c:s mov_text -disposition:s forced ya.mp4

但是,在嘗試了“強制”和“預設”後,FFmpeg 標記的字幕不會被 VLC 辨識為強制。


為了回應評論,這裡是 MP4Box 0.7.0(2017 年 4 月)和 VLC 3.0.0-20170926(2017 年 9 月)的測試。請注意,最新的 VLC 版本存在崩潰問題,即使在沒有字幕的影片上也是如此。使用這個文件:

youtube-dl --write-auto-sub --format 18 --output xr.mp4 kcs82HnguGc
ffmpeg -i xr.en.vtt xr.en.srt
mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4

結果:

子

引用自:https://unix.stackexchange.com/questions/232302