gpt4 book ai didi

audio - FFMPEG 音频规范化器 dynaudnorm 对 amix 没有影响

转载 作者:行者123 更新时间:2023-12-03 00:07:45 82 4
gpt4 key购买 nike

基本上我将多个 mp3 文件与 amix 混合在一起。和 adelay .

我遇到的问题是第一个 mp3 音量很低,最后一个音量太大,与这篇文章中讨论的完全相同:FFMPEG amix filter volume issue with inputs of different duration

我遵循@Gyan 的解决方案,将这些选项添加到 amix :duration=first:dropout_transition=0,dynaudnorm但对输出没有影响。



我的命令就是这样的:

ffmpeg \
-i "video.mp4" \
-i "audio1.mp3" \
-i "audio2.mp3" \
-i "audio3.mp3" \
-y \
-filter_complex " \
[a:0]volume=0[videoAudio]; \
[1]adelay=500[ad1]; \
[2]adelay=5400[ad2]; \
[3]adelay=10000[ad3]; \
[videoAudio][ad1][ad2][ad3]amix=inputs=4:duration=first:dropout_transition=0,dynaudnorm \
" \
output.mp3

知道如何获得 dynaudnorm工作?

最佳答案

[a:0]volume=0[videoAudio]; \



如果您要使视频配乐静音,为什么不完全忽略它呢?

[1]adelay=500[ad1]; \



如果您的 mp3 文件是立体声的,那么您必须为两个 channel 指定延迟。

duration=first



通过延迟输入, audio3.mp3会自动变成最长的:
[ delay 500ms ]<audio1.mp3>|
[ | delay 5400ms ]<audio2.mp3>
[ | delay 10000ms ]<audio3.mp3>

垂直线(紧跟在 audio1.mp3 之后)用 duration=first 标记流的结尾.在这种情况下,你真的想要默认的 duration=longest !

dropout_transition=0



我建议将此选项设置为混音的总长度,然后是 volume过滤器设置为输入量,以恢复音量。

要找出混音的总长度:
ffmpeg \
-i "audio1.mp3" \
-i "audio2.mp3" \
-i "audio3.mp3" \
-lavfi "
[0]adelay=500|500[ad1];
[1]adelay=5400|5400[ad2];
[2]adelay=10000|10000[ad3];
[ad1][ad2][ad3]amix=inputs=3
" \
-f null -

假设这返回 time=00:01:30.74例如。那么最终的命令将是:
ffmpeg \
-i "audio1.mp3" \
-i "audio2.mp3" \
-i "audio3.mp3" \
-lavfi "
[0]adelay=500|500[ad1];
[1]adelay=5400|5400[ad2];
[2]adelay=10000|10000[ad3];
[ad1][ad2][ad3]amix=inputs=3:dropout_transition=90.74,volume=3,dynaudnorm
" \
output.mp3

[编辑]
如果你说你已经用你提供的网址阅读了 Gyan 的回答,那么我不明白为什么我还要告诉你 duration=firstdropout_transition=0 .让我告诉你 dropout_transition的意义.
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "[1]adelay=11233[ad2];[2]adelay=20141[ad3];[0][ad2][ad3]amix=inputs=3" \
-f null -
[...]
size=N/A time=00:00:33.43 bitrate=N/A speed= 134x

我测试了 3 个样本。音频混合的总长度是 33.43秒。

这就是 dropout_transition=0 时波形的样子:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=0,
volume=3,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=0,vol=3,wavespic.png"

ffmpeg_amix=dt=0,vol=3,wavespic
就像您原始帖子中的波形一样;结尾变得非常响亮。所以这与 dynaudnorm 无关.

dropout_transition设置为音频混合的总长度(不要忘记 volume=3 ),这就是波形的样子:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=33.43,
volume=3,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=33.43,vol=3,wavespic.png"

ffmpeg_amix=dt=33.43,vol=3,wavespic

接下来你应该玩 dynaudnorm正如 Paul B. Mahol 所提到的,它的参数:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=33.43,
volume=3,dynaudnorm=f=200:g=15,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=33.43,vol=3,dynaudnorm=f=200-g=15,wavespic.png"

ffmpeg_amix=dt=33.43,vol=3,dynaudnorm=f=200-g=15,wavespic

我更喜欢 acompressor -过滤器顺便说一句:

ffmpeg_amix=dt=33.43,vol=3,acomp=l=2-t=-30dB-a=200-r=1000-d=0-mu=+5.1dB,wavespic
[/编辑]

关于audio - FFMPEG 音频规范化器 dynaudnorm 对 amix 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457078/

82 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com