複数の音声トラックや字幕を持つ動画を扱うとき、FFmpeg に任せきりだと意図しないストリームだけが残ることがあります。-map オプションを使えば、どの映像・音声・字幕を出力に含めるかを明示的に選べます。この記事では -map の基本構文から、特定トラックの抽出、ネガティブマッピングによる除外、複数入力ファイルのまとめ方までを実例で解説します。

動作確認: FFmpeg 6.1(ubuntu-latest / GitHub Actions CI 検証済み)/対象 OS: Windows / macOS / Linux


-map を使わない場合のデフォルト動作

-map を指定しないとFFmpegは自動的に「最適な」ストリームを1つずつ選択します:

  • 映像:最高解像度のストリーム
  • 音声:最多チャンネルのストリーム
  • 字幕:選択しない(デフォルトでは字幕は含まれない)

複数音声トラックや特定の字幕を扱うには -map が必要です。


-map の基本構文

-map [入力ファイルインデックス]:[ストリームタイプ]:[ストリームインデックス]
  • 入力ファイルインデックス:0番目の入力は 0、2番目は 1 など
  • ストリームタイプ:v(映像)、a(音声)、s(字幕)、d(データ)
  • ストリームインデックス:同じタイプの中での番号(0始まり)

基本的な使い方

最初の映像と最初の音声ストリームを選択

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

全ストリームをコピー(字幕含む)

ffmpeg -i input.mkv -map 0 -c copy output.mkv

-map 0 は入力ファイル0のすべてのストリームを出力に含めます。


ストリームの情報を確認する

まず ffprobe で入力ファイルのストリーム一覧を確認します:

ffprobe -v quiet -show_streams -select_streams a input.mkv

複数音声トラックを扱う

特定の音声トラック(2番目)だけを抽出

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -c copy output_audio1.mp4

全音声トラックを含める

ffmpeg -i input.mkv -map 0:v -map 0:a -c copy output_all_audio.mp4

字幕ストリームの選択

字幕を含めて出力

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:0 -map 0:s:0 -c copy output_with_sub.mkv

字幕だけを抽出

ffmpeg -i input.mkv -map 0:s:0 -c:s copy output.srt

ネガティブマッピング(特定ストリームを除外)

-map の前に - をつけると、そのストリームを除外できます:

字幕を除いたすべてのストリーム

ffmpeg -i input.mkv -map 0 -map -0:s -c copy output_nosubs.mkv

-map 0(全ストリーム)の後に -map -0:s(字幕を除外)を指定します。

特定の音声トラックだけを除外

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

複数入力ファイルからストリームをまとめる

2つのファイルから映像と音声を取り出して1つにまとめる:

ffmpeg -i video.mp4 -i audio.mp3 -map 0:v:0 -map 1:a:0 -c copy output.mp4

2言語音声トラックを1ファイルにまとめる

ffmpeg -i video.mp4 -i audio_ja.aac -i audio_en.aac \
  -map 0:v:0 -map 1:a:0 -map 2:a:0 \
  -c copy output_bilingual.mkv

ストリームのメタデータを設定する

ストリームに言語タグを設定する場合:

ffmpeg -i input.mkv -map 0 -c copy \
  -metadata:s:a:0 language=jpn \
  -metadata:s:a:1 language=eng \
  output.mkv

よくある使用例まとめ

目的コマンド
映像のみ抽出-map 0:v:0
音声のみ抽出-map 0:a:0
全ストリームコピー-map 0
字幕を除く全ストリーム-map 0 -map -0:s
別ファイルから音声差し替え-map 0:v -map 1:a

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート

関連記事


一次ソース: ffmpeg.org/ffmpeg.html#Stream-specifiers-1 / trac.ffmpeg.org/wiki/Map