[FFmpeg] 映像と音声を結合してひとつの動画にする
独立した映像と音声ファイルを組み合わせて、一つの動画ファイルを作る方法を説明します。
音のない映像に音声を結合する
音声のない映像ファイルに音声ファイルを結合する場合のコマンドです。
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4
コマンド | 解説 |
---|---|
-i video.mp4 |
入力映像ファイル |
-i audio.mp3 |
入力音声ファイル |
-c:v copy |
映像を再エンコードせずにそのままコピー(高速処理) |
-c:a aac |
音声をAAC形式でエンコード |
output.mp4 |
出力ファイル名 |
映像の再エンコードを避ける (-c:v copy
を使う) ことで処理時間を大幅に短縮できます。
なお、このコマンドでは「映像」「音声」ともに 同じ長さである ことを前提にしています。
既存の音声を別の音声に差し替えて結合する
既存の音声だけを入れ替えたい場合のコマンドです。
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4
どちらのファイルも映像+音声が入っている場合でも、このコマンドを使うことができます。
ffmpeg -i video_1.mp4 -i video_2.mp4 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4
コマンド | 解説 |
---|---|
-i video.mp4 |
入力映像ファイル |
-i audio.mp3 |
入力音声ファイル |
-c:v copy |
映像を再エンコードせずにそのままコピー(高速処理) |
-c:a aac |
音声をAAC形式でエンコード |
-map 0:v |
1番目の入力ファイルから映像ストリームを使用 |
-map 1:a |
2番目の入力ファイルから音声ストリームを使用 |
output.mp4 |
出力ファイル名 |
map オプションについて
-map
オプションは、動画ファイルにある複数のストリームの中から任意のストリームだけを指定したいときに使用します。
書式
-map
を使うときは、以下のように指定します。
-map [n]:[v/a/s][?]:[m]
パラメータ | 意味 |
---|---|
n |
入力ファイル番号 (n-1) |
v |
映像ストリーム (video) |
a |
音声ストリーム (audio) |
s |
字幕ストリーム (subtitle) |
? |
ストリームが存在しない場合は無視 |
m |
指定番号のストリームを使用 |
入力ファイル番号について:
ファイルは読み込み順の早いものから処理されるため、最初に指定したファイルが1番目となります。
ただし、map で入力ファイルを指定するときは 0番目 (n-1) と数えることに注意が必要です。
map 0
- 入力ファイル(0番目) のすべてのストリームを使用する。
map 0:v
- 入力ファイル(0番目) のすべての映像ストリームを使用する。
map 0:a? -map 1:v
- 入力ファイル(0番目) のすべての音声ストリームを使用する、存在しなければスキップ。
- 入力ファイル(1番目) のすべての映像ストリームを使用する。
map 0:v:1
- 入力ファイル(0番目) のすべての映像ストリームの中から1番目のストリームを使用する。
map 0:1
- 入力ファイル(0番目) の1番目のストリームを使用する。
動画ファイルのストリーム構成を見る
動画ファイルがどのようなストリーム構成になっているのかを見るためのコマンドです。
ffmpeg -i FILE_NAME.mp4
上記のコマンドを実行するとファイル構成が表示されますが、注目するのは以下のような「Stream ~」の部分です。
※上記は、MP4ファイルなどで通常よく見かける構成 (1つの動画+1つの音声) です。
Stream #0:0
以降に表示されているのが、1つの動画ファイルに存在するストリームです。
Stream #0:0
= 映像(Video) ストリームStream #0:1
= 音声(Audio) ストリーム
副音声つきの動画やドライブレコーダー、字幕つきなどのファイルを扱う場合、同じ種類のストリームが複数入っていることがあります。
そのため、ファイルを扱う場合はまず最初にファイル構成を確認することをおすすめします。
音声に複数ストリームがある例 :
このように、複数の音声ストリームから構成されているファイルもあります。
なお、必要とする音声ストリームがどれなのかファイル構成から判別できない場合は、1つずつ抽出して確認する必要があるかもしれません。