使用 FFmpeg,我试图将许多音频文件组合成一个长文件,每个文件之间都有淡入淡出。为了保持数字简单,假设我有 10 个输入文件,每个 5 分钟,我希望每个文件之间有 10 秒的交叉淡入淡出。(结果持续时间为 48:30。)假设所有输入文件具有相同的编解码器/比特率。
我惊喜地发现交叉淡入淡出两个文件是多么简单:
ffmpeg -i 0.mp3 -i 1.mp3 -vn -filter_complex acrossfade=d=10:c1=tri:c2=tri out.mp3
但acrossfade
过滤器不允许 3+ 输入。所以我天真的解决方案是重复运行ffmpeg
,将前一个中间输出与下一个输入文件交叉淡化。这并不理想。这让我想到了两个问题:
1.是否acrossfade
无损复制流?(当然,除了它们主动交叉淡入淡出的地方。)或者整个输入流都被重新编码了吗?
如果输入流完全重新编码,那么我的幼稚方法非常糟糕。在上面的示例中(调用acrossfade
9 次),第一个文件的前 4:50 将被重新编码 9 次!如果我合并 50 个文件,第一个文件将被重新编码 49 次!
2. 为了避免多次运行和重新编码问题,我可以在一次ffmpeg
调用中实现多次交叉淡入淡出行为吗?
我想我需要一些长的过滤图,但我还没有弄清楚。有没有人有交叉淡入淡出只有 3 个输入文件的例子?从那我可以自动化更长链的过滤器图。
感谢您的任何提示!