FFmpeg创建了一个小的音频丢失\u转换前和后音频覆盖,我如何删除它?

FFmpeg创建了一个小的音频丢失\u转换前和后音频覆盖,我如何删除它?,ffmpeg,Ffmpeg,file1.wav的长度为25分钟。file2.wav的长度为20秒。File2.wav延迟到file1.wav的末尾,这两个文件被“混合”在一起。延迟工作正常,并覆盖到25分钟file1.wav文件末尾的正确位置。我的问题是将两个剪辑混合在一起--我相信在file2.wav覆盖到file1.wav之前和之后,dropout_过渡(即使它设置为0)仍然会产生一种不希望听到的“下倾”。有没有办法确保根本不发生“下跌”?这两个剪辑都很平衡,都使用了混合软件,所以我根本不想让它们改变,但我也不想失真。

file1.wav的长度为25分钟。file2.wav的长度为20秒。File2.wav延迟到file1.wav的末尾,这两个文件被“混合”在一起。延迟工作正常,并覆盖到25分钟file1.wav文件末尾的正确位置。我的问题是将两个剪辑混合在一起--我相信在file2.wav覆盖到file1.wav之前和之后,dropout_过渡(即使它设置为0)仍然会产生一种不希望听到的“下倾”。有没有办法确保根本不发生“下跌”?这两个剪辑都很平衡,都使用了混合软件,所以我根本不想让它们改变,但我也不想失真。这可能吗?是否可以使用amerge而不是amix作为替代方案?我试过了,但我想不出正确的语法。感谢天才们的帮助

我尝试了各种不同的辍学转换设置和音量设置……这是我所期望的结果。正如我所说,我无法找出正确的语法来使用amerge而不是amix

ffmpeg -i file1.wav -i file2.wav -filter_complex "[1]adelay=70751488S|#70751488S,volume=1[b];[0][b]amix=inputs=2:duration=first:dropout_transition=0,volume=2" /output.wav

它起作用了!这是解决办法。1) 如上所述,确保您的退出转换=以秒为单位的最长文件的长度。谢谢你2)我使用的两个文件是48/16位波形文件。确保导出要混合在一起的32位浮点波形文件。根据手册:amix仅支持“浮点采样;如果amix输入具有整数采样,则将自动插入aresample以执行到浮点采样的转换。”显然,这是可行的,但aresample在不使用32位wave文件时会以某种方式扰乱转换。不知道为什么要避免这种转换,只使用32位wave文件。3) 注:将两个.wav文件组合在一起时,总输出降低为-6dB。这是为了防止变形,这是正常的。所以问题是为什么阿瑞森姆把事情搞砸了

目前,由于我不知道的原因,
amix
-过滤器总是执行“音量标准化”,无法关闭。我几天前报告的。此后没有任何反应。同时,您可以将
辍学_transition
设置为整个输出的长度,然后启动音量。我也在票上解释过。
amerge
-filter btw合并频道,我相信这不是您想要的。@Reino,跳过标准化可能会剪切和展平输出。奇怪的是,您会得到一个“before”覆盖,因为adelay所做的是在前面添加无声帧。因此,混音是在t=0时开始的。@Gyan,而不是当您的音频片段打算以最大音量进行混音时。由于我的持续时间是25分钟,我将把“退出”转换设置为1500秒,然后看看它是如何工作的@Gyan-我相信为了防止失真,您可以使用“alimiter”命令,尽管我还没有实现它。不确定此代码是否有效:ffmpeg-i file1.wav-i file2.wav-filter_complex“[1]adelay=70751488S |#70751488S,volume=1[b];[0][b]amix=inputs=2:duration=first:dropout_transition=1500,volume=2[m];[m]alimiter[a]”-map[a]/output.wav