Apple TVおよびiOSデバイスで再生できる映画からオーディオトラックを作成しています。HandbrakeはProLogic IIマトリックスエンコーディングを使用して5.1オーディオをステレオにダウンミックスできます。ffmpegでそれを行うにはどうすればよいですか?
私はこれを見つけました ffmpeg Tracのリンクlibswresample
でマトリックスエンコーディングを行うことができると述べていますが、さらに検索しても、コマンドラインでこれを実際に使用する方法は示されていません。
私は試した
ffmpeg -i test.mkv -map 0:1 -c libfdk_aac -ac 2 -af aresample -matrix_encoding dplii out.aac
ここで、ソースファイル内の唯一のオーディオトラックtest.mkv
は5.1ch DTS HD MAですが、生成されたAACオーディオはマトリックスエンコードされていないようです。
aresample
の手動エントリによると、リサンプラオプションを別の形式で指定する必要があります。
フィルタは構文
[sample_rate:]resampler_options
を受け入れます。ここで、sample_rate
はサンプルレートを表し、resampler_options
は「key=value
」で区切られた:
ペアのリストです。
つまり、次のように呼び出す必要があります。
-af "aresample=matrix_encoding=dplii"
ここでいくつかの答えをまとめると、これが最良の答えのように見えます。
ffmpeg -i SourceVideoWithFivePointOne.mkv -map 0:1 \
-c libfdk_aac -ac 2 -af "aresample=matrix_encoding=dplii" \
DestinationAudioWithDolbyPLII.aac
ボーナスポイントの場合、既存の5.1チャンネルをチャンネル2に降格し、ステレオをチャンネル1として宣伝すると、次のようになります。
ffmpeg -i SourceWithFivePointOne.mkv -c:v copy -map 0:0 -map 0:1 -map 0:1 \
-c:a:0 libfdk_aac -ac 2 -af "aresample=matrix_encoding=dplii" \
-c:a:1 copy \
DestinationVideoWithSurroundAndStereo.mkv
私の好みの方法は、ffmpegを使用してDTSをステレオにダウンミックスし、その出力をQuicktime AACコマンドラインエンコーダーにパイプすることです(Quicktimeは リスニングテスト で最高のAACエンコーダーです) )。
ffmpeg.exe -report -loglevel verbose -i "videofile.mkv" -map 0:a:0 -f wav -acodec pcm_f32le -ac 2 - | qaac.exe --tvbr 127 --quality 2 --rate keep --ignorelength --no-delay - -o "audioonly.m4a"
ffmpeg.exe および qaac.exe が必要です