ffmpeg 在修剪 mp3 文件时不精确

ffmpeg being inprecise when trimming mp3 files

我想使用 ffmpeg trim 一些 mp3 而无需重新编码。我使用的命令是
ffmpeg -i "inputfile.mp3" -t 00:00:12.414 -c copy out.mp3
但是,out.mp3 的长度为 12.460 秒,当我在 Audacity 中加载该文件时,我可以看到它是在错误的位置剪切的,而不是 12.414 秒。

这是为什么?我在谷歌上搜索了一下,并尝试了一些其他命令,例如 ffmpeg -i "inputfile.mp3" -ss 0 -to 00:00:12.414 -c copy out.mp3(有趣的是结果长度不同,为 12.434 秒),但永远无法正确削减毫秒数。

PS。我不确定 SO 是否是正确的提问地点,因为它在技术上与编程无关,但是我在 ffmpeg 上发现的 trimming 音频文件的大部分内容都是 Whosebug 问题,例如。 G。 ffmpeg trimming videos with millisecond precision

您无法 trim 具有该精度水平的 MP3(也不是大多数有损编解码器输出)。在编码过程中添加了一个 MP3 帧左右的填充。 (另请参阅:https://wiki.hydrogenaud.io/index.php?title=Gapless,以及完成这项工作所需的所有技巧。)

如果您需要精确计时,请使用 WAV 中的 PCM 等未压缩格式,或 FLAC 等无损压缩格式。

在 Linux 你可以使用 mp3splt:

mp3splt -f mp3file.mp3 from to -o output file format

示例:

mp3splt -f "/home/audio folder/test.mp3" 0.11.89 3.25.48 -o @f_trimmed this will create a "/home/audio folder/test_trimmed.mp3"

有关参数的更多信息,请查看 mp3splt 手册页 here


在 Windows 你可以使用 mp3DirectCut

mp3DirectCut 有一个 GUI,但它也有命令行支持