二ヶ国語のMP4ファイルをエンコードする。

TSファイルで二ヶ国語(音声多重)のものを二ヶ国語MP4にエンコードするのは、Aviutlだとひと手間必要です。Handbrakeなど他のツールは使っていないのでわかりませんが、自分は以下のような手順で行っています。
 
もちろん他にもいろいろやり方はあるでしょうが、バッチファイル化してTS(うちの場合はTMSRで編集したm2tsファイル)を食わせてやれば自動的にdemuxしてくれますので、この方法でずっとやっています。

  1. M2TSファイルを用意します。
  2. ffmpeg でストリーム0(映像部)を切り出して、m2v にします。
  3. ffmepg でストリーム1(音声1)を切り出して、m4a にします。
  4. ffmpeg でストリーム2(音声2)を切り出して、m4a にします。
  5. m2v は Aviutl に食わせて mp4 にします。
  6. m4a はそれぞれ音声コーデックに食わせて、aacにします。
  7. 最後に remuxer に食わせて結合します。
2と3は、そのまま結合するとなぜかTMSRが「MP4で標準的な音声ストリームではない」と言われてしまうため、あえて入れています。
また、5の音声コーデックはffmpegでもいいしQAACでもいいです。音質的には ffmpeg + libfdk_aac と qaac と、どちらでも非常によいです。また、5.1ch音声でもちゃんとエンコードしてくれます。remの部分でqaacかffmpegを選択して使います。
ffmpeg -i "%~nx1" -map 0:0 -c copy "%~dpn1.m2v"
ffmpeg -i "%~nx1" -map 0:1 -c copy "%~dpn1-1101.aac"
C:\Apps\aviutl\exe_files\qaac64 -V 127 "%~dpn1-1101.aac"
rem ffmpeg -i "%~nx1" -map 0:1 -c:a libfdk_aac -vbr 5 "%~dpn1-1101.m4a"
ffmpeg -i "%~nx1" -map 0:2 -c copy "%~dpn1-1102.aac"
C:\Apps\aviutl\exe_files\qaac64 -V 127 "%~dpn1-1102.aac"
rem ffmpeg -i "%~nx1" -map 0:2 -c:a libfdk_aac -vbr 5 "%~dpn1-1102.m4a"

ffmpeg は libfdk_aac を使えるように自分でビルドしています。
結合は remuxer を使います。

remuxer -i {video} -i {audio1} -i {audio2} -o {mp4file}

です。
以前はmp4box使ってたんですが、ファイル名の扱いの部分でちょっとおかしい(たぶん文字コード関係)ことがあったので、こちらに切り替えました。

0 件のコメント:

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...