FFMPEG trim 和 concat mp3 无需重新编码
FFMPEG trim and concat mp3 without re-encoding
美好的一天,
我想知道是否可以使用 ffmpeg "join" 将 mp3 文件的一部分 转换为另一个 而无需重新编码 。我需要在音频 mp3 文件前加上静音,以确保它有 60 秒长。
也就是说,如果我的音频文件 a.mp3 是 40 秒,我需要在不重新编码的情况下预先设置 20 秒的静音。
我这样做的想法是在相同的 CBR 和音频采样率(44100 和 40kbps)下播放 60 秒长的无声 mp3 (silence.mp3)。然后我需要 "trim" 这个文件和 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 文件中必须使用的静音长度作为参数包含在内。
如有任何建议,我们将不胜感激。
您的要求是不重新编码,而这正是您的方法所做的。
假设您已准备好所需时长的无声 MP3。
创建一个文本文件,list.txt
file silence.mp3
outpoint 20
file main.mp3
并加入
ffmpeg -f concat -i list.txt -c copy merged.mp3
我假设 silence.mp3 的属性在声道数和采样率方面与主音频文件匹配。
美好的一天,
我想知道是否可以使用 ffmpeg "join" 将 mp3 文件的一部分 转换为另一个 而无需重新编码 。我需要在音频 mp3 文件前加上静音,以确保它有 60 秒长。
也就是说,如果我的音频文件 a.mp3 是 40 秒,我需要在不重新编码的情况下预先设置 20 秒的静音。
我这样做的想法是在相同的 CBR 和音频采样率(44100 和 40kbps)下播放 60 秒长的无声 mp3 (silence.mp3)。然后我需要 "trim" 这个文件和 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 文件中必须使用的静音长度作为参数包含在内。
如有任何建议,我们将不胜感激。
您的要求是不重新编码,而这正是您的方法所做的。
假设您已准备好所需时长的无声 MP3。
创建一个文本文件,list.txt
file silence.mp3
outpoint 20
file main.mp3
并加入
ffmpeg -f concat -i list.txt -c copy merged.mp3
我假设 silence.mp3 的属性在声道数和采样率方面与主音频文件匹配。