ffmpegを使用してデフォルトの字幕を設定する方法

ffmpegを使用してデフォルトの字幕を設定する方法

ビデオ、オーディオ、ファイルで.srtmp4ファイルを作成しました。

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 -codec mov_text out.mp4

うまくいきますが、デフォルトでは字幕は表示されません。字幕を基本にする方法はありますか?

答え1

あなたはそれを使用することができます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

ただし、「Forced」と「Default」を試みた後、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

結果:

息子

答え2

これが回避策と見なされるかどうかはわかりません。 vlc+ffmpeg 調整が必要です。 vlcでは、「eng」をsubsのデフォルトパラメータに設定できます。 https://stackoverflow.com/questions/17928192/set-a-subtitle-言語-using-ffmpeg ffmpeg の "-metadata:s:s:0 言語=eng" - "eng" など、サブストリームのメタデータを設定できます。 vlc 3.0.9.2でこれを試しましたが、vlcはeng sub replayを選択しました。

役に立ったことを願って

(上記は、「ID 94213サポートされていないコーデック」の問題に対する解決策を見つけるための解決策の一部です。)「-sn」を使用して、ビデオ/オーディオ/サブストリームを新しいビデオ/オーディオ専用ストリームにコピーし直してください。 -関連サブフローの追加)

関連情報