手元に、映像ファイル(video.mp4)、音声ファイル(audio.mp4)、字幕ファイル(sub.srt)があるため、それらを一つのファイルにまとめたい。
FFmpegで動画に字幕・副音声を追加する | DevelopersIO
に解決策が書かれている。
ffmpeg -i video.mp4 -i audio.mp4 -i sub.srt -map 0:v -map 1:a -map 2 -metadata:s:s:0 language=Japanese -c:v copy -c:a copy -c:s copy output.mkv
のコマンドを実行すればよい。
参考URLには
ffmpeg -i video.mp4 -i audio.mp4 -i sub.srt -map 0:v -map 1:a -map 2 -metadata:s:s:0 language=jpn -metadata:s:s:0 title="Japanese" -c:v copy -c:a copy -c:s copy output.mkv
オプションもついていたが、表示される字幕の言語が「jpn」のままだった。
追記:
作成した動画を再生するとき、デフォルトでは字幕が表示されない。
デフォルト字幕を表示させるため、
-disposition:s:0 default
のオプションをつければよい。また、今後のマルチ音声に対応するため、音声にもメタデータをつけることも可能なので、最終的なコマンドは
ffmpeg -i video.mp4 -i audio.mp4 -i sub.srt -map 0:v -map 1 -metadata:s:a:0 language=Japanese -map 2 -metadata:s:s:0 language=Japanese -c copy -disposition:s:0 default output.mkv
となる。