ffmpeg -ss 00:00:00 -i 'input.mp3' -to 00:25:00 -c 复制输出.mp3
我在编写脚本时注意到这个特定脚本适用于 mp3 文件但不适用于 .wav 文件。发生的事情是它(奇怪地)复制到一个 25 分钟的 .mp3 文件,但它本质上在最后剪辑了音频。似乎出于某种原因将实际音频拉伸到 25 分钟边界之外,因此发生了剪辑。.wav 文件不会发生这种情况。搜索手册页时,我发现了以下内容:
-ss 位置(输入/输出)用作输入选项(在 -i 之前)时,在此输入文件中查找位置。请注意,在大多数格式中,不可能精确搜索,因此 ffmpeg 将搜索到位置之前最近的搜索点。当启用转码和 -accurate_seek(默认)时,搜索点和位置之间的这个额外片段将被解码并丢弃。在进行流复制或使用 -noaccurate_seek 时,它将被保留。
我的问题是,首先,似乎 .mp3 不是一种受支持的格式,但考虑到发生的情况,似乎支持 .wav 文件。这是它剪辑音频的原因吗?其次,是否有关于具有 100% 准确 -ss 时间的支持格式的文档?我在任何手册页中都找不到。也许文档存在,但如果存在,我猜它应该列在该部分中。这是关于 ffmpeg 的错误文档,应该更新!没有帮助的模糊信息。
唯一可完美搜索的格式是非压缩格式。即 wav 和 pcm。所有压缩格式都编码为“帧”(因为这就是压缩的工作原理)。使用编解码器复制,您只能复制整个帧。每个编解码器对每帧样本使用不同的数字。