お茶漬けぶろぐ

ffmpegで副音声ビデオを作成する

副音声を持つ動画ファイルを作りたい

普段動画編集といえばaviutlでカット編集程度なんだけど、それでHEVC+aacをmp4ファイルに収めたファイルを作ったあと、そこに追加で音声データをくっつけて、副音声ファイルを作りたい用事があったのでメモ。
aviutlでやるには面倒そうな気配を感じたので(リサーチ不足?)、ffmpegでさらっと作る。

実際にやる

source.mp4append_audio.aacを混ぜてoutput.mp4に書き出すイメージで。

ffmpeg -i source.mp4 -i append_audio.aac -c copy -map 0:0 -map 0:1 -map 1:0 output.mp4

ここで重要なのがmapオプション。どのファイルのどのストリームを使うのかを表現する。

どう指定するのかというと、ffmpegにファイルを食わせたときの出力でStream #0:0: Video: h264...(略)みたいに出力されるこの0:0を使う。
上記の例だと、「0番目のファイルの0番目のストリーム(source.mp4の動画)、0番目のファイルの1番目のストリーム(source.mp4の音声)、1番目のファイルの0番目のストリーム(append_audio.aacの音声)」を意味する。

本当はオーディオ部分のみとか、このファイルの全部のストリームとか、便利そうな指定があるのだけど、そういうパターン指定をせずとも足りそうな気がしたので省略。必要になったときにマニュアル読もう。

副音声を取り出す

mapオプションの使い方がわかっていれば普通にやれそうだけど、以下のような感じで良い。

ffmpeg -i source.mp4 -c copy -map 0:2 output.aac

もちろん、上記例では、0番目のファイル(source.mp4)の2番めのストリームとして副音声が記録されているという前提。

おしまい

ffmpegは、これさえあれば動画の形式変換の類はマジでなんでもできるんじゃねーのと思わせるくらい便利なのだけど、それだけオプション類が多すぎて把握するのが大変。
mapオプションも存在は知っていたのだが使い方を知ろうともせず生きてきたところ、そう難しい概念でもなく、わりあい簡単に扱えそうだった。さっさと調べればよかったんね。

< あけましておめでとうございます的な

IMAPアカウントの内容をまるっとコピーする >