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で複数の音声をamergeする時にエラーが出た話

Posted at

ffmpegで複数の音声をamergeしようとした際エラーが出た

ffmpeg -y -i a.mp3 -i b.mp3 -i c.mp3 -i d.mp3 -i e.mp3 
-filter_complex "[0:a]aloop=loop=-1:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,afade=t=out:st=14.0:d=1.0[0a];
[1:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame[1a];
[2:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame[2a];
[3:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame[3a];
[4:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame[4a];
[0a][1a][2a][3a][4a][5a][6a]amerge=inputs=7[OUTPUT_AUDIO]" -map "[OUTPUT_AUDIO]" -b:a 128k -acodec libmp3lame -f mp3 output.mp3

というコマンドを打ったら、エラーが出た。

Input channel layout '10 channels (FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL)' is not supported

amergeする時のストリームのチャネルが多すぎるということだったので、channelsplit=channel_layoutオプションを各ストリームにつけてみた。

ffmpeg -y -i a.mp3 -i b.mp3 -i c.mp3 -i d.mp3 -i e.mp3 
-filter_complex "[0:a]aloop=loop=-1:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,afade=t=out:st=14.0:d=1.0,channelsplit=channel_layout=stereo[0a];
[1:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[1a];
[2:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[2a];
[3:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[3a];
[4:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[4a];
[0a][1a][2a][3a][4a]amerge=inputs=7[OUTPUT_AUDIO]" -map "[OUTPUT_AUDIO]" -b:a 128k -acodec libmp3lame -f mp3 output.mp3

そしたら今度はInvalid audio stream. Exactly one MP3 audio stream is required.と出た。
ここで2時間ぐらい悩んだのだが、原因はシンプルだった。

channelsplit=channel_layout=stereo[0a];

ステレオを指定した場合、出力されるチャネルは2つなのだが、ここでは1つしか設定していない。
これが原因だった。
修正後、amergeする前に各チャネルをamixするなどの処理を追加し、

ffmpeg -y -i a.mp3 -i b.mp3 -i c.mp3 -i d.mp3 -i e.mp3 
-filter_complex "[0:a]aloop=loop=-1:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,afade=t=out:st=14.0:d=1.0,channelsplit=channel_layout=stereo[0al][0ar];
[1:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[1al][1ar];
[2:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[2al][2ar];
[3:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[3al][3ar];
[4:a]aloop=loop=0:size=2e+09,atrim=start=0.0:end=15.0,volume=volume=enable='between(t,0,15.0)':volume=1.0:eval=frame,channelsplit=channel_layout=stereo[4al][4ar];
[0al][1al][2al][3al][4al]amix=inputs=5[LEFT_OUTPUT];
[0ar][1ar][2ar][3ar][4ar]amix=inputs=5[RIGHT_OUTPUT];
[LEFT_OUTPUT][RIGHT_OUTPUT]amerge=inputs=7[OUTPUT_AUDIO]" -map "[OUTPUT_AUDIO]" -b:a 128k -acodec libmp3lame -f mp3 output.mp3

これでやっとうまくいった。。
ちゃんとリファレンス読まないとだめすな。

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?