用FFmpeg截取音频
🎵 音频截取的创作要点

音频截取是音频创作中最常用的操作之一:

  • 精选片段:截取音频中的精彩部分用于铃声、彩蛋、预告片——如音乐的高潮副歌、播客中的金句、演讲的精华段落。
  • 去除冗余:录音时开头和结尾常有空白或杂音,截取可以有效清除无用部分,让成品更加精炼专业。
  • 平滑过渡:在截取点附近建议使用淡入淡出(afade滤镜)处理,避免音频突然开始或结束带来的突兀感。
  • 多片段拼接:当需要将多个截取的音频片段拼接时,务必确保各片段的采样率、声道数和编码格式一致,否则会导致播放异常或杂音。
FFmpeg 音频截取核心参数详解

FFmpeg 截取音频片段主要依赖三个时间参数:-ss(起始时间)、-t(持续时长)和 -to(结束时间)。

参数含义示例
-ss 00:01:30从第 1 分 30 秒开始截取-ss 00:01:30
-t 10截取 10 秒钟(从起始点开始持续 10 秒)-t 10
-to 00:02:00截取到 2 分 00 秒结束-to 00:02:00
-ss 的两种放置位置:Fast Seek vs Accurate Seek

Fast Seek(快速定位):将 -ss 放在 -i 之前,例如:ffmpeg -ss 00:01:30 -i input.mp3 ...。这种方式会先跳转到关键帧(I帧)附近,速度极快,但截取的起始点可能不够精确(误差在关键帧间隔内,通常 0.5~10 秒)。适用于对起始位置要求不高的场景。

Accurate Seek(精确定位):将 -ss 放在 -i 之后,例如:ffmpeg -i input.mp3 -ss 00:01:30 ...。FFmpeg 会先解码输入文件,再精确到指定时间点截取,定位准确到采样点级别。缺点是速度较慢,因为需要解码从文件头到目标时间点的所有数据。

-acodec copy:不重编码,保留原始品质

-acodec copy 表示直接复制音频流,不进行编解码操作。这意味着:

  • 处理速度极快(仅复制数据包,无需 CPU 解码再编码)
  • 输出文件与原文件音频质量完全一致(无损截取)
  • 输出文件的编码格式与原文件相同(如 MP3 截取后仍是 MP3)

如果不加 -acodec copy,FFmpeg 默认会重新编码音频,不仅速度慢,还可能降低音质。

时间格式说明

FFmpeg 支持多种时间格式:

  • HH:MM:SS.mmm(时:分:秒.毫秒):00:01:30.500 表示 1 分 30 秒 500 毫秒
  • 秒数-t 10.5 表示持续 10.5 秒
  • HH:MM:SS(时:分:秒):00:01:30 表示 1 分 30 秒
广告
{{v.name}}
从第 30 秒开始,截取 10 秒钟的音频,代码如下
$ ffmpeg -i input.mp3 -ss 00:00:30 -t 10 -acodec copy output.mp3
从 1 分 30 秒开始,截取到 2 分 00 秒结束,代码如下
$ ffmpeg -i input.mp3 -ss 00:01:30 -to 00:02:00 -acodec copy output.mp3
截取到文件末尾,代码如下
$ ffmpeg -i input.mp3 -ss 00:01:30 -acodec copy output.mp3
友链