amerge
我在我的命令中混合了音量调节。
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
但是由于出现错误,因此无法创建。
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.
我遵守规则,特别是两个输入必须具有相同的格式等等。
我对这个错误信息也不太熟悉,因为这是我第一次遇到它。
答案1
显然它比我想象的要挑剔,所以这次我对音频过滤器更加明确aformat
。这应该对你有用,但我没有对其进行广泛的测试:
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
答案2
再举一个例子,下面是我如何应用aformat
连接过滤器amerge
的方法volume
,这些过滤器显然没有足够早地声明输出流通道布局,以便amerge
弄清楚该做什么。
该命令的目的是生成一个简单的左/右/双立体声扬声器测试文件。它使用 LAME 以最低 VBR 质量编码为 MP3。
该命令已被编辑以提高可读性;请务必添加\
或^
行延续根据您的 CLI 要求。
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"
amerge
在这种情况下, /部分pan
可以简化:
[l3][r3] amerge [out]"
顺便说一句,我发现 FFmpeg-v debug
输出实际上对最终用户很有帮助,可以帮助他们弄清楚发生了什么,因为 FFmpeg 用户通常是技术人员。