无需重新编码的FFmpeg修剪和拼接mp3FFmpeg

2023-09-03 09:32:28 作者:幻灭之后的蜜糖城堡

日安,

我想知道是否可以在不使用ffmpeg重新编码的情况下将mp3文件的一部分"联接"到另一个文件。我需要在音频mp3文件前面加上静音以确保其长度为60秒。

DVDVideoSoft Free Video Editor下载 视频剪辑工具 v1.4.56.703 官方版

即,如果我的音频文件.mp3为40秒,则需要在不重新编码的情况下添加20秒的静默时间。

我的想法是以与我的音频相同的CBR和采样率(44100和40kbps)获得60秒长的静默mp3(silence.mp3)。然后,我需要"修剪"该文件,并适当地连接/加入音频文件(.mp3)。

我有一个计算所需秒数的Linux脚本,我尝试使用以下Filter_Complex表达式:

ffmpeg -i silence.mp3 -i a.mp3 -filter_complex "[1]adelay=20000[b];[0][b]amix=2" out.mp3

但是,这会花费太长时间,因为它执行重新编码需要很长时间才能处理。我正在寻找一种不需要重新编码的解决方案,它可以将Silence.mp3的正确大小部分连接到.mp3。这些命令需要包括必须从整个Silence.mp3文件中使用的静默长度作为参数。

感谢您的任何建议。

推荐答案

您的要求是不重新编码,但您的方法就是这样做的。

假设您已准备好所需持续时间的静音MP3。

创建文本文件list.txt

file silence.mp3
outpoint 20
file main.mp3

和联接

ffmpeg -f concat -i list.txt -c copy merged.mp3

我假设Silence.mp3的属性在声道计数和采样率方面与主音频文件匹配。