Simplify FFmpeg amerge and volume customization
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Drifting Through My Dreams
--
Chapters
00:00 Simplify Ffmpeg Amerge And Volume Customization
01:52 Accepted Answer Score 16
02:46 Thank you
--
Full question
https://superuser.com/questions/714879/s...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#ffmpeg
#avk47
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Drifting Through My Dreams
--
Chapters
00:00 Simplify Ffmpeg Amerge And Volume Customization
01:52 Accepted Answer Score 16
02:46 Thank you
--
Full question
https://superuser.com/questions/714879/s...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#ffmpeg
#avk47
ACCEPTED ANSWER
Score 16
One command to bind them
You can do this in one command using the volume
audio filter instead of the old -vol
option (as mentioned by your console output):
ffmpeg -i music.mp3 -i videowithaudio.mp4 -filter_complex \
"[0:a]volume=0.390625[a1];[1:a]volume=0.781250[a2]; \
[a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
-map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4
You may have to adjust the values for volume
.
Potential problems
syntax is deprecated
[Parsed_pan_4 @ 0x244c980] This syntax is deprecated. Use '|' to separate the list items.
Don't worry – you can ignore this message.
could not choose their formats
[AVFilterGraph @ 0x26549a0] The following filters could not choose their formats: Parsed_amerge_3
Consider inserting the (a)format filter near their input or output.
All inputs must have the same sample rate and format for amerge
. If they are different then you will have to use the aformat
audio filter:
ffmpeg -i music.mp3 -i videowithaudio.mp4 -filter_complex \
"[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; \
[1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.8[a2]; \
[a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
-map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4