FFmpeg の `-map` パラメータの詳細な説明: ビデオ、オーディオ、および字幕ストリームの正確な選択

FFmpeg `-map` のステップバイステップ ガイド: ストリームの命名規則から、複数入力の合成、ネガティブ マッピング、およびオプションのマッピングまで。

マルチオーディオ トラックおよびマルチ字幕ビデオ処理では、-map は FFmpeg の最も重要で最も誤用されやすいパラメータの 1 つです。

-map を明示的に指定しない場合、FFmpeg はデフォルトのルールに従ってストリームを自動的に選択するため、多くの場合、期待した結果が得られません。例えば:

  • エクスポートすると字幕が失われる
  • 間違ったオーディオトラック言語が選択されました
  • 不要なデータストリームが混入している

この記事では、最も一般的なシナリオを使用して、-map の使用方法を説明します。

まずは「流れ」とは何かを理解する

通常、コンテナー ファイルには複数のコンテンツ ストリーム (ストリーム) が存在します (mp4mkv など)。一般的なものには次のようなものがあります。

  • ビデオストリーミング (v)
  • オーディオ ストリーム (a)
  • 字幕ストリーム (s)
  • 添付ファイル/データ ストリーム (フォント、表紙、章など)

まず ffprobe を使用して、ファイル内にどのようなストリームがあるかを確認できます。

1
ffprobe -hide_banner input.mkv

-map の基本構文

最も一般的な書き方は次のとおりです。

1
-map input_index[:stream_type][:stream_index]

例えば:

  • 0:v: 1 番目の入力ファイルのすべてのビデオ ストリーム
  • 0:a:0: 入力ファイル 1 のオーディオ ストリーム 1
  • 1:s:1: 2 番目の入力ファイルの 2 番目の字幕ストリーム

例証します:

  • input_index0 から始まり、-i のシーケンスに対応します。
  • stream_index0 で始まります

実践例

1) ビデオは A から、音声は B から来ます

1
2
3
4
ffmpeg -i english.mp4 -i french.mp3 \
  -map 0:v:0 -map 1:a:0 \
  -c:v copy -c:a aac \
  french.mp4

意味:

  • english.mp4 の最初のビデオ ストリームを取得します
  • french.mp3 の最初のオーディオ ストリームを取得します
  • 結合された出力は french.mp4 です。

2) 最初の入力のすべてのストリームを保持し、追加のオーディオ トラックを追加します。

1
2
3
4
ffmpeg -i english.mp4 -i french.mp3 \
  -map 0 -map 1:a:0 \
  -c copy \
  english-french.mp4

意味:

  • -map 0 まず、すべてのストリームを最初の入力ファイルに取り込みます
  • 2 番目の入力の最初のオーディオ ストリームを追加します

非常に実践的な 2 つの高度なテクニック

1) ネガティブ マッピング: 不要なフローを除外します。

たとえば、最初の入力のすべてのストリームを保持しますが、2 番目のオーディオ ストリームを削除します。

1
ffmpeg -i input.mkv -map 0 -map -0:a:1 -c copy output.mkv

2) オプションのマッピング: ストリームは存在せず、中断されません。

一部のファイルには字幕がない場合があります。その場合は、? を使用できます。

1
ffmpeg -i input.mp4 -map 0:v -map 0:a -map 0:s? -c copy output.mp4

0:s? は、「字幕がある場合はマップし、字幕がない場合はスキップし、エラーは報告されない」ことを意味します。

一般的なピットの位置

  1. -map を使用すると、FFmpeg はデフォルトでストリームを自動的に選択しなくなるため、必要なものをすべて書き出す必要があります。
  2. -c copy は、トランスコーディングを行わずにカプセル化とコピーのみを行います。ターゲット コンテナが特定のエンコーディングをサポートしていない場合でも、失敗します。
  3. 複数の入力を入力するときに最もよくある間違いは、シリアル番号を入力することです。シリアル番号は -i の順序にのみ依存することに注意してください。
  4. 安定したスクリプトを作成したい場合は、まず ffprobe を作成し、次に手書きよりも安定した -map を生成します。

要約する

-map の中核は 1 つの文です。「どの入力から、どのタイプのストリームを取得し、どのストリームを取得するか」を FFmpeg に明確に指示します。

マスタリング後は、複数のオーディオトラック、複数の字幕、ファイル間の結合などの複雑なシーンを安定して処理できるようになり、「エクスポート結果が間違っているが原因がわからない」という問題を回避できます。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。