web-dev-qa-db-ja.com

ffmpeg:いくつかのオーディオストリームの1つを無効にします

2つのオーディオストリームを含むビデオファイルがあります。

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 960x540, 58 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
  creation_time   : 2012-07-21 06:10:08
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 164 kb/s
Metadata:
  creation_time   : 2012-07-21 06:10:08
Stream #0:2(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s
Metadata:
  creation_time   : 2012-07-21 06:10:08

それらの1つだけを無効にする方法はありますか?私が実際に必要なのは、そのようなファイルを取得することです。

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 960x540, 58 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc
Metadata:
  creation_time   : 2012-07-21 06:10:08
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 164 kb/s
Metadata:
  creation_time   : 2012-07-21 06:10:08

ありがとう

6
hdf

ストリームの選択

デフォルトでは、ffmpegストリーム選択 は、次の基準に基づいて、ストリームタイプごとに1つのストリームのみをマップします。

  • ビデオ–最高解像度のストリーム
  • オーディオ–最も多くのチャンネルを持つストリーム
  • 字幕–最初の字幕ストリーム

同じタイプの複数のストリームが等しくレートする場合、インデックスが最も低いストリームが選択されます。

-map option は、以下に示すようにこの動作をオーバーライドします。

例1:明示的なマッピング

入力ストリームインデックスを参照して、ffmpegに必要なストリームを正確に伝えます。

ffmpeg -i input -map 0:1 -map 0:2 -c copy output
  • -c copy will stream copy (re-mux)再エンコードする代わりに、マップされた各ストリーム。

または、 ストリーム指定子 を使用します:

ffmpeg -i input -map 0:v -map 0:a:0 -c copy output
  • ストリーム指定子の使用は、正確なストリームインデックスを知る必要がないため、より柔軟であり、ビデオをオーディオのみの形式にマッピングしようとするなどの偶発的なマッピングを防ぐのに役立ちます。

  • -map 0:vは入力0からのすべてのビデオストリームをマップします(ffmpegは0からカウントを開始するため、0が最初の入力であり、この場合は唯一の入力です)。

  • -map 0:a:0は、入力0からの最初のオーディオストリームをマッピングします。

例2:ネガティブマッピング

ffmpegにすべてをマッピングするように指示してから、除外するものを選択します。

ffmpeg -i input -map 0 -map -0:a:1 -c copy output
  • -map 0は入力0からのすべてのストリームをマップします。

  • -map -0:a:1は、入力0から2番目のオーディオストリームを除外します。

14
llogan

ストリーム指定子を使用して、ストリームタイプと特定のストリームを選択できます。詳細はこちら...

http://ffmpeg.org/ffmpeg.html#Stream-specifiers-1

1
dors