使用ffmpeg剪切音频from/to位置

Using ffmpeg to cut audio from/to position

我需要从音频文件中逐个剪切部分。当我尝试这个命令时

ffmpeg -ss 132 -t 139 -i original.mp3 new.mp3

它从第 132 秒开始,并将接下来的 139 秒添加到新文件中。

我需要的是132秒到139秒

当我尝试时

ffmpeg -ss 132 -to 139 -i original.mp3 new.mp3

它给我一个错误:

Unrecognized option 'to'
Failed to set value '139' for option 'to'

(我不想说要多少秒,只是from/to)。

-- 我有 ffmpeg 版本 0.8.20-6:0.8.20-0+deb7u1(2017 年 1 月 19 日 11:13:36 使用 gcc 4.7.2 构建)。当我尝试更新它时(apt-get install ffmpeg),它告诉我 "ffmpeg is already the newest version".

-ss是输入选项,而-t-to是输出选项。所以你需要这样做:

ffmpeg -ss 60 -i 'les nuits 128k.m4a' -to 70 -c copy out.m4a
ffmpeg -i "original.mp3" -ss 60 -to 70 "new.mp3"

这对我有用。

对于 FFmpeg,参数的排序很重要。输入之前的所有参数都将应用于该输入。输出也是如此......直接在它应用于输出之前的参数。

考虑这个命令行:

ffmpeg -ss 132 -i input.mp3 output.mp3

-ss 是要查找的参数,因此 FFmpeg 将查找输入文件到 132 秒,并在 00:00:00 处有效处理。与输出相关的其余 FFmpeg 命令不知道或不关心该输入来自何处或如何查找。因此,当您使用 -to-t 时,给定的时间或长度需要 相对于输入 。也就是说,如果您想要第 132 秒到第 139 秒,您想要寻找 132 (-ss 132 -i input.mp3) 的输入,然后 运行 7 秒的输出(-t 7 output.mp3-to 00:00:07 output.mp3).

您可以在文档中阅读更多相关信息,以及有关帧准确与否(是否重新编码)的详细信息:https://trac.ffmpeg.org/wiki/Seeking

至于-to不在...

As I shown above, I have the latest version of the software.

您肯定没有远程拥有最新版本的 FFmpeg。无论包管理器有什么分支,您都可能拥有最新版本,它可能是今年构建的,但如果您查看下载页面,在撰写本文时最新版本是 3.3.4。 https://www.ffmpeg.org/download.html

你可以处理你的包管理器和依赖地狱,或者根据你的许可限制,获取最近的静态构建:https://www.johnvansickle.com/ffmpeg/

最后,考虑 -acodec copy 以确保您不会因转码而进一步损害音频质量,因为您要保持相同的格式。


这对我有用

ffmpeg -ss 60 -i input-audio.aac -t 15 -c copy output.aac
  • -ss 60 表示,"start from second 60"
  • -t 15 音频输出长度(以秒为单位)..在这种情况下,15 秒..

到 Trim 使用 FFmpeg

的音频文件

开始持续时间 = 00:00:00, 结束持续时间 = 00:00:10

audioPath = audio.mp3, mp3Output = outputFile.mp3

cmd = "-ss $startDuration -i $audioPath -c copy -t $endDuration $mp3Output"