[FFmpeg-user] FFmpeg apply same audio mixing to multiple output
Moritz Barsnick
barsnick at gmx.net
Mon Mar 30 16:25:13 CEST 2015
On Mon, Mar 30, 2015 at 06:45:40 -0700, Jeromy wrote:
> ./ffmpeg -i 1.amr -i 2.amr -filter_complex amix=inputs=2:duration=longest:dropout_transition=2 -c:a amr_nb -ac 1 -ar 8000 -b:a 12.2k -y output1.amr -c:a pcm_alaw -ac 1 -ar 16000 -y output2.wav -c:a pcm_mulaw -ac 1 -ar 16000 -y output2.wav
By the way, you have three outputs, two of them named output2.wav! And
where's your MP3 output? You should habe noticed this from your output
stream mapping.
Assuming you mean to have three:
> The problem is that audio mixing is applyed only to first amr file.
> How can I apply the audio mixing to all output file.
You should change to something like this:
$ ffmpeg -i 1.amr -i 2.amr -filter_complex "amix=inputs=2:duration=longest:dropout_transition=2,asplit=3[audio1][audio2][audio3]" -map "[audio1]" -c:a amr_nb -ac 1 -ar 8000 -b:a 12.2k -y output1.amr -map "[audio2]" -c:a pcm_alaw -ac 1 -ar 16000 -y output2.wav -map "[audio3]" -c:a libmp3lame -ac 1 -ar 16000 -y output3.mp3
Note splitting the filter output into three using
asplit=3[audio1][audio2][audio3]
and mapping each of those filter chain outputs to an output encoder using
-map "[audioX]"
This gives me:
Stream mapping:
Stream #0:0 (pcm_s16le) -> amix:input0
Stream #1:0 (pcm_s16le) -> amix:input1
asplit:output0 -> Stream #0:0 (libopencore_amrnb)
asplit:output1 -> Stream #1:0 (pcm_alaw)
asplit:output2 -> Stream #2:0 (libmp3lame)
which should be what you intended.
HTH,
please let us know how it works,
Moritz
More information about the ffmpeg-user
mailing list