The following filters could not choose their formats: Parsed_amerge_5 Consider inserting the (a)format filter near their input or output in FFmpeg
I mixed in volume levelling in my amerge
command.
ffmpeg -i adele.mp3 -i ruby.mp4 -filter_complex \
"[0:a]aformat=sample_fmts=s16:channel_layouts=stereo,volume=0.390625[a1];
[1:a]aformat=sample_fmts=s16:channel_layouts=stereo,aresample=44100,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
But there's an error so it couldn't be created.
ffmpeg version N-60332-ga0d5204 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 4 2014 21:31:51 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
libavutil 52. 63.100 / 52. 63.100
libavcodec 55. 49.101 / 55. 49.101
libavformat 55. 29.101 / 55. 29.101
libavdevice 55. 7.100 / 55. 7.100
libavfilter 4. 1.102 / 4. 1.102
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, mp3, from 'adele.mp3':
Metadata:
title : Chasing Pavements
artist : Adele
track : 3
album : 19 (Deluxe Edition)
date : 2008
Duration: 00:03:30.55, start: 0.025056, bitrate: 160 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 159 kb/s
Stream #0:1: Video: mjpeg, yuvj420p(pc), 600x600 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
Metadata:
title :
comment : Other
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'Ruby on Rails 101- What is Ruby on Rails_.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-12-21 07:56:20
Duration: 00:05:42.40, start: 0.000000, bitrate: 1214 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1020 kb/s, 30 fps, 30 tbr, 60 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #1:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s (default)
Metadata:
creation_time : 2013-12-21 07:56:23
handler_name : IsoMedia File Produced by Google, 5-11-2011
[Parsed_pan_6 @ 0x7fc8a1c0d360] This syntax is deprecated. Use '|' to separate the list items.
File 'output.mp4' already exists. Overwrite ? [y/N] y
[Parsed_amerge_5 @ 0x7fc8a1c36f60] No channel layout for input 1
Last message repeated 1 times
[AVFilterGraph @ 0x7fc8a1e00ae0] The following filters could not choose their formats: Parsed_amerge_5
Consider inserting the (a)format filter near their input or output.
I followed the rules, particularly both inputs must have the same format and more.
I am not also familiar with the error message bec. it's my first time to encounter it.
Apparently it's pickier than I thought, so I was more explicit with the aformat
audio filter this time. This should work for you, but I did not test it extensively:
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
Continued from: Simplify FFmpeg amerge
and volume
customization.
Just to add another example, here's how I applied aformat
to hook up amerge
with volume
filters that apparently don't declare the output stream channel layout early enough for amerge
to figure out what to do.
The purpose of the command is to produce a simple left/right/both stereo speaker test file. It is encoded as MP3 using LAME on lowest VBR quality.
The command has been edited for readability; be sure to add \
or ^
for line continuation according to your CLI's requirements.
ffmpeg -v debug -i mikro128.mp3
-filter_complex
"[0:a] channelsplit [l] [r];
[l]volume='if(between(t,1,2),0.1, 1)':eval=frame [l2];
[r]volume='if( gt(t,1), 1, 0.1)':eval=frame [r2];
[l2] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [l3];
[r2] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [r3];
[l3][r3] amerge=inputs=2,pan=stereo|c0=FL|c1=FR [out]"
-map "[out]"
-c:a libmp3lame -q:a 9 "links, rechts, beide.mp3"
The amerge
/pan
part can be simplified in this case:
[l3][r3] amerge [out]"
By the way, I find the FFmpeg -v debug
output is actually helpful to the end user in order to figure out what goes on, given that the FFmpeg user is usually a tech guy.