FFMPEG trim和concat mp3无需重新编码

时间:2017-12-10 21:21:48

标签: audio ffmpeg mp3

美好的一天,

我想知道是否可以加入"使用ffmpeg将mp3文件的一部分转换为另一个而不重新编码。我需要在静音前添加一个音频mp3文件,以确保它长达60秒。

即如果我的音频文件a.mp3是40秒,我需要在没有重新编码的情况下预先设置20秒的静音。

我这样做的想法是在相同的CBR和我的音频采样率(44100和40kbps)下有一个60秒的长静音mp3(silence.mp3)。然后我需要"修剪"这个文件和适当的concat / join音频文件(a.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的正确大小部分加入a​​.mp3。这些命令需要在整个silence.mp3文件中包含必须使用的静默长度作为参数。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

我们假设您已准备好所需持续时间的无声MP3。

创建一个文本文件list.txt

file silence.mp3
outpoint 20
file main.mp3

并加入

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

我假设silent.mp3的属性与主音频文件匹配,就通道数和采样率而言。