如何使用 avconv 剪切音频文件?

如何使用 avconv 剪切音频文件?

我很难弄清楚如何使用 剪切文件avconv。这是我使用的命令:

avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav 

但它不起作用。结果我得到了整个文件。好吧,几乎是整个文件。不知何故,生成的文件有持续时间1:16:31而不是1:17:23。另外,我相信我以所有可能的方式执行了此命令:使用-ss-t之后-i,使用-t指定结束点,使用 mp3 文件,使用指定音频编解码器,使用ffmpeg。我做错了吗?

更新型多巴胺感谢bodhi.zazen这项工作(我纠正了报告的偏移量和持续时间mp3splt-gtk,由于某种原因它们是错误的,目标是剪切 mp3 文件)

avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3

但事实并非如此:

avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3

生成的文件从 00:52:08 开始,一直到原始文件末尾。我认为如果在 之前指定,-ss和则-t与输入文件相关-i。否则与输出文件相关。有人能解释一下吗?

答案1

我认为最初的问题出在时间戳的格式上。

格式为 HH:MM:SS

我不确定我是否理解了你关于选项顺序的问题。我认为只要 -i 后面跟着输入文件名,并且 -ss HH:MM:SS 后面跟着我的 -t HH:MM:SS,那么这无关紧要

-ss HH:MM:SS 是起点,-t HH:MM:SS 是持续时间

因此 -ss 00:01:00 -t 00:05:00 将从一分钟标记开始并运行 5 分钟。

在我的系统上,使用 ffmpeg,顺序无关紧要(您可以按任何顺序指定时间或输入文件,只要 -ss 后跟持续时间(-t))

答案2

问题出在-ss取决于命令行中的位置的不同含义。这是从项目avconv还未完成时遗留的问题ffmpeg,我相信在较新的版本中已经修复。

在过去,如果你说

 ffmpeg -ss 5 -i input

你的意思是“跳到文件中的第 5 秒标记并从那里开始阅读”。

但如果你说

ffmpeg -i input -ss 5

您的意思是“打开输入文件并跳过五秒标记前的所有数据”。

正如您所理解的,第一种方法实际上会经常失败,因为您跳过文件而不读取它。它只适用于包含时间戳的文件,允许您读取帧并知道您是否已经走得太远。

基本上,ffmpeg 的工作方式是“根据第一秒猜测比特率,然后假设所有其他秒都相同”。但是,当然,并非所有秒都相同,如果我们谈论的是 52 小时的“漂移”,则错误可能会非常大。

因此,如果您使用的是 avconv 的早期后分割版本,则应始终将其放在-ss正在读取的文件之后。但在较新的版本中(据我所知),此错误已得到修复。

答案3

尝试:

avconv -i RR119Accessibility.wav -ss 52:13:49 -t 01:13:52 RR119Accessibility-2.wav

ffmpeg 和 avconv 的选项是位置敏感的。

在您的示例中,ffmpeg 开始读取文件并开始从时间戳 -ss 输出
(ffmpeg 在我的系统上运行良好而 avconv 却不行,称之为某种回归)。

在我这里给出的例子中,avconv(或就此而言的 ffmpeg)首先寻找正确的偏移量,然后开始读取和输出。这对两者都有效。

您可以在以下位置找到有关 avconv 的更多文档http://libav.org 这些人已经分叉了 ffmpeg,并且还负责 Ubuntu 中极其古老的 ffmpeg 版本。

真正的 ffmpeg 不在 ubuntu 存储库中,而是在 PPA 中:
ppa:jon-severinsson/ffmpeg
您可以在以下位置找到有关 ffmpeg 的更多文档http://ffmpeg.org

认为手册页已经过时

相关内容