各チャンネルの音声を混ぜたり無音にしたりできるpan
フィルタの使い方。
基本コマンド
ステレオをそのままステレオで出力。
ffmpeg -i stereo -af "pan=stereo|c0=c0|c1=c1" -c:v copy output
ffplay -i stereo -af "pan=stereo|c0=FL|c1=FR"
c1(FR)をそのままにc0(FL)を無音にしたステレオ音声。
ffmpeg -i stereo -af "pan=stereo|c1=c1" -c:v copy output
ffplay -i stereo -af "pan=stereo|c1=FR"
c1(FR)とc0(FL)を逆にしたステレオ音声。
ffmpeg -i stereo -af "pan=stereo|c0=c1|c1=c0" -c:v copy output
ffplay -i stereo -af "pan=stereo|c0=FR|c1=FL"
ステレオ音声をそれぞれ別ファイルで出力。
ffmpeg -i stereo -filter_complex "[0:a]pan=1c|c0=c0[left];[0:a]pan=1c|c0=c1[right]" -map "[left]" left.wav -map "[right]" right.wav
左右のチャンネルを同じだけ合わせたステレオ音声。
ffmpeg -i stereo -af "pan=stereo|c0<1*FR+1*FL|c1<1*FR+1*FL" -c:v copy output
ffplay -i stereo -af "pan=stereo|c0<1*FR+1*FL|c1<1*FR+1*FL"
フィルタでステレオを左右ミックスしたモノラルにするにはchannelsplit、amix
フィルタを併用する。
ffmpeg -i stereo -af "channelsplit,amix" -c:v copy output
ffplay -i stereo -af "channelsplit,amix"
複数の音声を混ぜる amix
任意の音声チャンネルを出力する channelsplit
5.1チャンネルの音声の音量を変える(FC、LFEを2倍にする)。
ffmpeg -i 6channels -af "pan=5.1|FL=FL|FR=FR|FC=2*FC|LFE=2*LFE|BL=BL|BR=BR" -c:v copy -c:a ac3 output.ts
ffplay -i 6channels -af "pan=5.1|FL=FL|FR=FR|FC=2*FC|LFE=2*LFE|BL=BL|BR=BR"
5.1チャンネルの音声をFLとFRだけのステレオにする。
ffmpeg -i 6channels -af "pan=stereo|c0=FL|c1=FR" output
公式ドキュメント:FFmpeg Filters Documentation : pan
公式wiki:AudioChannelManipulation – FFmpeg
オプション
最初の引数で出力チャンネル数を指定し、バーティカルバー|で区切りながら各チャンネルの設定を行う。設定を行わなければ無音チャンネルになる。c0から順番にチャンネルが割り当てられその順番は チャンネルレイアウトの書式に準ずる。
Individual channels: NAME DESCRIPTION FL front left FR front right FC front center LFE low frequency BL back left BR back right Standard channel layouts: NAME DECOMPOSITION mono FC stereo FL+FR 5.1 FL+FR+FC+LFE+BL+BR
設定の順番は"l|outdef|outdef|..."になる。入力チャンネルを合わせるときに=または<が使え、前者は合計が 1 を超えても超えなくてもそのまま合計する。後者は合計が 1 を超えても超えなくても 1 になるように調整し音量が大きすぎてクリップノイズが発生するのを抑える。
例えば、"pan=stereo|c1=c1"だと stereo は2チャンネル出力で c0(FL), c1(FR) の設定ができるが、c0 は何も書いていないので無音になる。最初の c1 が出力するチャンネル、次の c1 が入力したチャンネルになり、入力した c1 に出力する c1 を割り当てている。
複数ファイルを入力したときの c の番号は1入力の音声から 0 が割り振られ、振り終わったら2入力の音声が引き続き割り振られる。
- l
出力チャンネルレイアウトmono, stereo, 5.1などと設定する方法と、出力チャンネル数c0, c1, c2などで設定する方法の2通りがある - outdef
出力チャンネル数を設定したら次のように設定する"out_name=[gain*]in_name[(+-)[gain*]in_name...]" - out_name
出力チャンネル名mono, stereo, 5.1などと設定する方法と、出力チャンネル番号c0, c1, c2で設定する方法の2通りがある - gain
音量の累乗係数の設定。1 だと入力音量そのまま - in_name
入力チャンネル名の設定。個別のチャンネルを合わせることも出来る