FFmpeg 是处理音频文件的命令行神器,强大且高效。本文档旨在整理日常工作中最为核心的三大操作:裁剪、转码与合并。这里只提供最常用、最直接的指令范例,帮助你快速解决问题,无需深入复杂的理论。
一、准备工作:查看音频信息
在进行任何操作前,先用 ffprobe 快速了解文件的编码、码率、采样率等信息,这对于后续操作至关重要,尤其是在合并文件时。
|
|
二、裁剪音频:精确提取或分割
无论是截取一段,还是将长音频分割成章节,裁剪都是基础操作。
方案一:无损裁剪(速度最快)
此方法不重新编码,速度极快,且无任何质量损失。它会在最接近你指定时间点的“关键帧”上进行切割。
|
|
提示:
-c copy是无损操作的核心。为提升网络播放体验,可以在 M4A/MP4 容器后添加-movflags +faststart。
方案二:重编码裁剪
如果你需要毫秒级的绝对精确切割,或者需要改变输出格式,则需要进行重编码。只需去掉 -c copy 并指定编码参数即可。
|
|
三、格式转码
将音频转换为不同格式或码率,以适应不同平台或压缩文件体积。
核心参数解析
-c:a:指定音频编码器 (e.g.,libmp3lame,aac,alac,flac)-b:a:指定音频码率 (e.g.,128k,192k,320k)-q:a:指定 VBR 质量(仅部分编码器支持,如libmp3lame,数值越小质量越高)-ar:指定采样率 (e.g.,44100,48000)-ac:指定声道数 (e.g.,1for mono,2for stereo)
常用转码范例
|
|
四、合并音频:拼接多个片段
将多个音频文件合并成一个。这里介绍两种核心方法。
方法一:无损合并(最快,但有前提)
此方法通过一个清单文件进行流拷贝,速度飞快。但它有一个严格的前提:所有待合并文件的编码参数必须完全一致(编码器、Profile、采样率、声道数等)。
-
创建清单文件
list.txt,内容如下:1 2 3file 'part1.m4a' file 'part2.m4a' file 'part3.m4a' -
执行合并命令:
1ffmpeg -f concat -safe 0 -i list.txt -c copy output_merged.m4a排错:如果合并后出现播放问题(如后半段无声),通常是因为各片段的编码参数不一致(例如一个是 AAC-LC,另一个是 HE-AAC)。请先使用“转码”操作将它们统一规格,再进行合并。
方法二:重编码合并(最通用,但较慢)
此方法会解码所有输入文件,将它们连接起来,然后重新编码为一个新文件。它不要求输入文件规格一致,因此通用性最强。
|
|
concat=n=3中的n=3表示有 3 个输入文件。
附录:指令备忘清单
| 任务 | 核心指令 |
|---|---|
| 查看信息 | ffmpeg -i [输入文件] |
| 无损裁剪 | -ss [开始时间] -i [输入] -t [时长] -c copy [输出] |
| 转为MP3 | -c:a libmp3lame -q:a 2 |
| 转为AAC | -c:a aac -b:a 192k |
| 无损合并 | -f concat -i list.txt -c copy |
| 重编码合并 | -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[a]" -map "[a]" |