FFMPEG 在混合中设置音量

bee*_*eek 6 audio video ffmpeg

我一直在尝试将音频 mp3 与视频 mp4 混合,同时保留 mp4 音频。这是与 .

ffmpeg -y  -i video.mp4 -i audio.mp3
 -filter_complex "[0:a][1:a]amix=inputs=2:duration=longest[out]" 
 -map 0:v -map [out] output.mp4
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试调整声音文件(视频 0.5,音频 1)的音量作为混音的一部分。

我一直在尝试这样的事情

ffmpeg  -i 020c276b-face-4bb3-9169-e8969c1232ba.mp4 -i test.mp3 -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 aac -strict -2  output2.mp4`
Run Code Online (Sandbox Code Playgroud)

我收到错误,例如

[Parsed_aformat_2 @ 037f8620] 解析样本格式时出错:sample_fmts fltp。[AVFilterGraph @ 038be620] 使用 args 'sample _fmts fltp:sample_rates=44100:channel_layouts=stereo' 初始化过滤器 'aformat' 时出错,初始化复杂过滤器时出错。无效的论点

有谁知道如何使我在上面编写的代码有效,还可以更改输入的音量吗?

谢谢

l'L*_*L'l 8

如果您想使用,amix我建议您像这样使用它:

ffmpeg -i video.mp4 -i audio.mp3 -filter_complex \
"[0:a]volume=0.8[a0]; \
[1:a]volume=0.8[a1]; \
[a0][a1]amix=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest output.mp4 ;
Run Code Online (Sandbox Code Playgroud)

对于amerge方法:

ffmpeg -i video.mp4 -i audio.mp3 -filter_complex \
"[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.8[a0]; \
[1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.8[a1]; \
[a0][a1]amerge,pan=stereo|c0<c0+c2|c1<c1+c3 [a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict -2 -shortest output.mp4 ;
Run Code Online (Sandbox Code Playgroud)

根据Mulvya 的评论要记住的事情

amergeamix 默认情况下,以最短的输入(总是)终止并以最长的输入终止。因此,当流的长度不同时,前者将始终截断。

-y 出于测试目的省略标志。