ffmpeg -ss 00:00:00 -i'输入.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 的糟糕文档,应该更新!模糊的信息没有帮助。
答案1
唯一可以完美搜索的格式是非压缩格式。例如 wav 和 pcm。所有压缩格式都编码为“帧”(因为压缩就是这样工作的)。使用编解码器复制,您只能复制整个帧。每个编解码器对每帧的样本使用不同的数字。