経緯
Unityで360°動画を再生したい!
音声も3Dにしたい!
AudioSourceを周囲に配置しなきゃ!
音声をchannel毎に切り出さなきゃ…?
前提
ffmpeg version 3.2.2
やり方
ffmpeg -i in.mov -filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav
filter_complexオプションのchannelsplitでチャンネルの切り分け方を指定する。
5.1ch以外のパターン
まずAudioの形式を調べる
$ ffmpeg -i in.mov
(省略)
Stream #0:0(eng): Audio: pcm_s24be (lpcm / 0x6D63706C), 48000 Hz, 4.0, s32 (24 bit), 4608 kb/s (default)
(省略)
48000 Hz
の後の4.0で4.0chとわかる
4.0chのChannel LayoutはFL+FR+FC+BC
なので、
ffmpeg -i in.mov -filter_complex 'channelsplit=channel_layout=4.0[FL][FR][FC][BC]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[BC]' bc.wav
で切り出せる。
めでたしめでたし。
Channel-Layout
channel layoutいろいろあるのでまとめ
https://www.ffmpeg.org/ffmpeg-utils.html#Channel-Layout
channelのリスト
id | channel |
---|---|
FL | front left |
FR | front right |
FC | front center |
LFE | low frequency |
BL | back left |
BR | back right |
FLC | front left-of-center |
FRC | front right-of-center |
BC | back center |
SL | side left |
SR | side right |
TC | top center |
TFL | top front left |
TFC | top front center |
TFR | top front right |
TBL | top back left |
TBC | top back center |
TBR | top back right |
DL | downmix left |
DR | downmix right |
WL | wide left |
WR | wide right |
SDL | surround direct left |
SDR | surround direct right |
LFE2 | low frequency 2 |
channel layout のリスト
id | channel layout |
---|---|
mono | FC |
stereo | FL+FR |
2.1 | FL+FR+LFE |
3.0 | FL+FR+FC |
3.0(back) | FL+FR+BC |
4.0 | FL+FR+FC+BC |
quad | FL+FR+BL+BR |
quad(side) | FL+FR+SL+SR |
3.1 | FL+FR+FC+LFE |
5.0 | FL+FR+FC+BL+BR |
5.0(side) | FL+FR+FC+SL+SR |
4.1 | FL+FR+FC+LFE+BC |
5.1 | FL+FR+FC+LFE+BL+BR |
5.1(side) | FL+FR+FC+LFE+SL+SR |
6.0 | FL+FR+FC+BC+SL+SR |
6.0(front) | FL+FR+FLC+FRC+SL+SR |
hexagonal | FL+FR+FC+BL+BR+BC |
6.1 | FL+FR+FC+LFE+BC+SL+SR |
6.1 | FL+FR+FC+LFE+BL+BR+BC |
6.1(front) | FL+FR+LFE+FLC+FRC+SL+SR |
7.0 | FL+FR+FC+BL+BR+SL+SR |
7.0(front) | FL+FR+FC+FLC+FRC+SL+SR |
7.1 | FL+FR+FC+LFE+BL+BR+SL+SR |
7.1(wide) | FL+FR+FC+LFE+BL+BR+FLC+FRC |
7.1(wide-side) | FL+FR+FC+LFE+FLC+FRC+SL+SR |
octagonal | FL+FR+FC+BL+BR+BC+SL+SR |
downmix | DL+DR |
まとめ
FFmpegは奥が深いなぁ…
参考
channelsplit
https://ffmpeg.org/ffmpeg-filters.html#channelsplit
Channel Layout
https://ffmpeg.org/ffmpeg-utils.html#Channel-Layout