提取音频与视频
本教程共 32 篇 · 第 10 篇 · 更新于 2026-08-09 · 约 5 分钟阅读
本节目标:把视频里的声音单独存成音频文件,或者把音轨去掉只留画面;并掌握常见音频格式之间的转换方法。
这是日常最常用的 FFmpeg 操作之一:拿到一个 MV,想要里面的歌;拿到一个录像,不想要背景噪音……一行命令就能搞定。
提取音频(不要视频)
原封不动复制
如果源视频里的音频是 AAC,你想原封不动存成 .aac:
ffmpeg -i input.mp4 -vn -c:a copy output.aac
-vn:不要视频流。-c:a copy:音频直接复制,不重编码。
只要容器支持原始音频编码,这个过程就是秒级的。常见对应关系:
| 源音频编码 | 直接复制成 | 命令 |
|---|---|---|
| AAC | .aac 或 .m4a | -c:a copy out.aac |
| MP3 | .mp3 | -c:a copy out.mp3 |
| FLAC | .flac | -c:a copy out.flac |
| Opus | .opus 或 .ogg | -c:a copy out.opus |
| PCM | .wav | -c:a copy out.wav |
| AC3 | .ac3 | -c:a copy out.ac3 |
.m4a 是 AAC 音频常用的容器,比裸 .aac 兼容性更好:
ffmpeg -i input.mp4 -vn -c:a copy output.m4a
转换格式
如果源是 AAC,但你想要 MP3:
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
-c:a libmp3lame:用 LAME 编码器输出 MP3。-q:a 2:VBR 质量等级,0 最高、9 最低,2 约等于 190 kbps,音质很好。
转成 AAC(重新编码):
ffmpeg -i input.mp4 -vn -c:a aac -b:a 192k output.m4a
转成 FLAC(无损):
ffmpeg -i input.mp4 -vn -c:a flac output.flac
转成 WAV(未压缩 PCM,文件巨大):
ffmpeg -i input.mp4 -vn output.wav
不指定编码器时,WAV 默认用 pcm_s16le,16 位小端 PCM。
Tip如果你要的是「音质尽量好、文件无所谓」,选 FLAC;要「通用、体积适中」,选 AAC 192k 或 MP3 V2;要「绝对兼容老设备」,选 MP3 CBR 320k。
提取视频(不要音频)
ffmpeg -i input.mp4 -an -c:v copy output.mp4
-an:不要音频流。-c:v copy:视频直接复制。
同样,秒速完成。但要注意:不是所有容器都支持「纯视频、无音频」。MP4、MKV 都可以,但有些格式会自动补一条空音轨或直接报错。
如果还需要重编码(比如换编码器或缩放):
ffmpeg -i input.mp4 -an -c:v libx264 -crf 23 output.mp4
提取多条音轨中的某一条
一个视频可能有多条音轨(普通话、英语、评论音轨)。用 -map 选你要的那条(如 §09 所述):
# 列出所有流,先看清楚编号
ffprobe -hide_banner input.mkv
# 提取第 1 条音轨(编号 0:1)
ffmpeg -i input.mkv -map 0:a:1 -c:a copy output.aac
# 提取第 2 条音轨并转成 MP3
ffmpeg -i input.mkv -map 0:a:2 -c:a libmp3lame -q:a 2 output.mp3
想把所有音轨全导出来:
# 第 0 条音轨
ffmpeg -i input.mkv -map 0:a:0 -c:a copy track0.aac
# 第 1 条音轨
ffmpeg -i input.mkv -map 0:a:1 -c:a copy track1.aac
常见音频转换
MP3 转 AAC
ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a
AAC 转 MP3
ffmpeg -i input.m4a -c:a libmp3lame -q:a 2 output.mp3
任意格式转 WAV
ffmpeg -i input.m4a output.wav
立体声母带转单声道
ffmpeg -i input.mp3 -ac 1 output_mono.mp3
-ac 指定声道数,1 是单声道,2 是立体声。
改采样率
ffmpeg -i input.wav -ar 44100 output.wav
-ar 设置采样率,常见值 44100(CD 质量)和 48000(视频标准)。
截取一段音频
ffmpeg -ss 00:01:30 -t 30 -i input.mp3 -c:a copy output.mp3
从 1 分 30 秒开始,截取 30 秒。定位和截取的细节见 §11。
调音量
ffmpeg -i input.mp3 -af "volume=1.5" output.mp3
-af 是音频滤镜,volume=1.5 表示音量放大到 1.5 倍。音频滤镜会在 §26 详细讲。
批量化:一个文件夹的视频全抽成 MP3
Linux/macOS:
for f in *.mp4; do
ffmpeg -i "$f" -vn -c:a libmp3lame -q:a 2 "${f%.mp4}.mp3"
done
Windows PowerShell:
Get-ChildItem *.mp4 | ForEach-Object {
ffmpeg -i $_.FullName -vn -c:a libmp3lame -q:a 2 ($_.BaseName + ".mp3")
}
一个判断表
| 你想干什么 | 推荐做法 |
|---|---|
| 源音频是 AAC,要 AAC/M4A | -vn -c:a copy,秒出 |
| 源音频是任意格式,要 MP3 | -vn -c:a libmp3lame -q:a 2 |
| 源音频是任意格式,要 AAC | -vn -c:a aac -b:a 192k |
| 要保留无损 | -vn -c:a flac 或 copy 原 FLAC |
| 要编辑用的无压缩素材 | -vn output.wav |
| 只要画面不要声音 | -an -c:v copy |
| 要某一条特定音轨 | 先 ffprobe,再 -map 0:a:N |
小结
-vn去掉视频,-an去掉音频。- 能
-c:a copy就 copy,秒出且无损。 - 转 MP3 用
libmp3lame -q:a 2,转 AAC 用aac -b:a 192k。 - 多音轨文件用
-map 0:a:N选具体某条。 - WAV 是无压缩的,体积大;FLAC 是无损压缩,体积适中;AAC/MP3 是有损,体积小。
下一章讲片段截取:怎么从视频里切出你想要的那一段,以及怎么做到精确定位。