0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ffmpegのamixで音が小さくなった時の対処法

Last updated at Posted at 2020-07-05

amix使って音声マージしたらなんか音小さいんだけど。。

はい。やらかしました。ffmpegを使う機会があり、音周りロジックの修正をしたのですが、なんかもともとあったやつより音小さくなってました。。
自戒の意を込めて記事として残します。

やりたかったこと

複数の音声素材をfilter_complexでいじり、最終的にマージして1つのファイルにしたかった。

どうやったか

ffmpeg -i a.mp3 -i b.mp3 -i c.mp3 \
-filter_complex " \
[0:a]~~[0a] \
[1:a]~~[1a] \
[2:a]~~[2a] \
[0a][1a][2a]amix=inputs=3[a] \
" -map "[a]" output.mp3

これで一応音声はマージできていたのですが、なんか音が小さい。
既存のロジックはamerge使っていました。それと比べると音量が半分くらいになってる。

原因

調べた限りだと、amixはinputsの数に応じて音量を1/nしているようだった。
ただこれリファレンスに乗ってたわけじゃないから確たる証拠が無い。

対応

対応方法は自分の中で2つあった

1.amergeを使う

採用したのはこっちの案。
もともとamergeを使ってたのだから戻せばよいのだ。
しかし、今回の改修の影響でinputされる音声ファイルの量が増えたため、既存ロジックのままだとinput channel多すぎエラーが出る。

Input channel layout '40 channels (FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+DL+DR+WL+WR+SDL+SDR+LFE2)' is not supported

その辺を考慮しながら修正してこんな感じにした。

ffmpeg -i a.mp3 -i b.mp3 -i c.mp3 \
-filter_complex " \
[0:a]~~,channelsplit=channel_layout=stereo[0al][0ar]\
[1:a]~~,channelsplit=channel_layout=stereo[1al][1ar]\
[2:a]~~,channelsplit=channel_layout=stereo[2al][2ar]\
[0al][1al][2al][0ar][1ar][2ar]amerge=inputs=6,pan=stereo|FL=c0+c1+c2|FR=c3+c4+c5[a] \
" -map "[a]" output.mp3

# FL=c0+c1+c2 の = を < にすると自動でノーマライズしてくれる

2.amix時にvolumeを上げる

volumeが1/nされるなら打ち消すためにn倍volumeを増加させればよい。

ffmpeg -i a.mp3 -i b.mp3 -i c.mp3 \
-filter_complex " \
[0:a]~~[0a] \
[1:a]~~[1a] \
[2:a]~~[2a] \
[0a][1a][2a]amix=inputs=3,volume=3[a] \
" -map "[a]" output.mp3

感想

定量化できないものをテストするのってかなり難しい。
と思ってたらffmpegで音の波形を出力するコマンドがあるらしい。
https://nico-lab.net/create_samples_waves_image_with_ffmpeg/
これ使って波長一致ロジックとか組めばテストの信用性が上がると思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?