ffmpeg マッピングヘルプ、1 つの 6ch オーディオをマルチトラックにエンコードする

ffmpeg マッピングヘルプ、1 つの 6ch オーディオをマルチトラックにエンコードする

入力ファイルは 2 つあります。

  • cover.jpg
  • audio.dts(6チャンネル)

ターゲット ファイルは、ビデオ 1 つとオーディオ 3 つを含む mp4 になります。

  • オーディオ 1 は 2 チャンネル aac
  • オーディオ2は6チャンネルAC3
  • オーディオ3は6チャンネルDTSです

私が試したコマンドは次のとおりです。画像イメージをオーディオ マルチチャンネル付きのビデオに変換します。

ffmpeg -loop 1 -i cover.jpg -i audio.dts \
-map 0:0 -map 1:0 -map 1:0 -map 1:0 \
-f mp4 \
-codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \
-codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \
-codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \
-codec:a:2 copy \
-threads 0 -y \
-shortest -t 00:00:39.000 out.mp4

しかし、オーディオ #1 に適用したオーディオ オプションは、オーディオ #2 とオーディオ #3 にも適用されたようです。

これらのオプションを 1 つのトラックのみで機能させるにはどうすればよいですか?

答え1

いつものように、FFmpeg 内でこのようなタスクを実行する方法は複数あります。

私が最もよく知っているのは、channelsplitフィルターを使用してオーディオ ストリームを分離し、それぞれにラベルを定義することです。これにより、任意のチャネルに対して個別にさまざまなフィルターを実行し、出力をマッピングして、必要なチャネルの任意の組み合わせを含めることができます。

フィルターは次のようになります。

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...."

この例では、3 つのチャネルをそれぞれ新しいラベル と に分割しました。[1] [2]これら[3]のラベルは後で呼び出して他のフィルターにプッシュしたり、最終出力にマッピングしたりできるようになります。

お役に立てれば!

関連情報