ffmpeg 3.4 から追加のフィルタ。サラウンドを HRIRs(head-related impulse response, 頭部インパルス応答) ファイル web.archive.orgを元に頭部伝達関数(HRTF)を適用しユーザの周りに仮想スピーカを作ってステレオとして出力するheadphone
フィルタの使い方。
HRIRsファイルの配布ページが重たい場合はミラーを上げている。
HRIRsファイルには DFC, MINP, RAWがあり、基本コマンドにはSubject_001_Wav.zipを使っている。
基本コマンド
5.1ch の音声に映像をコピーして 2ch で出力
ffmpeg -i input -i azi_30_ele_0_DFC.wav -i azi_330_ele_0_DFC.wav -i azi_0_ele_0_DFC.wav -i azi_100_ele_0_DFC.wav -i azi_260_ele_0_DFC.wav -filter_complex "[0:a][1][2][3][3][4][5]headphone=FL|FR|FC|LFE|BL|BR" -vcodec copy output.mp4
2ch の音声を 5.1ch にsurround
フィルタで変換し映像をコピーして 2ch で出力
ffmpeg -i input -i azi_260_ele_0_DFC.wav -i azi_100_ele_0_DFC.wav -i azi_0_ele_0_DFC.wav -i azi_30_ele_0_DFC.wav -i azi_330_ele_0_DFC.wav -filter_complex "[a:0]surround[0a];[0a][1][2][3][3][4][5]headphone=FL|FR|FC|LFE|BL|BR" -vcodec copy output.mp4
公式ドキュメント:FFmpeg Filters Documentation : headphone
オプション
ゲインの設定をしても音量が変わらず、チャンネルマッピングmap以外の設定の方法がよく分からない。個別チャンネルの音量設定はpan
フィルタでもできる。
- map[string]
入力音声を配置し畳み込み処理をする。チャンネル毎に“|”で区切り、出力音声より多い数を入力する。基本は元となる音声にサラウンドのチャンネル数だけ HRIRs ファイルを入力する - gain[float]
ゲイン(dB)の設定
既定値:0 - lfe[int]
LFE ゲイン(dB)の設定
既定値:0 - type[float]
処理形式の設定
0, time (time domain processing ) 遅い
1, freq (frequency domain processing) 速い
既定値:1