ffmpeg提取音频命令说复杂也不复杂,核心就一行:ffmpeg -i 输入视频 -vn 输出文件。-i 指定输入,-vn 的意思是不要视频画面,剩下的交给输出文件的后缀和几个编码参数去决定。下面按「装好 ffmpeg、单个文件转 MP3、不转码直接拷音轨、截一段、整个文件夹批量处理、常见报错」的顺序,把我平时在用的写法整理出来,每条都能直接复制改文件名用。我自己做播客剪辑和课程整理,几年下来翻来覆去就用这么几条,记住了基本不用再查。
(官方说明)提词匠有 iPhone、安卓 App 和微信小程序三个入口,同一个微信账号登录,积分和会员三端互通。
先确认 ffmpeg 装好了,命令能跑起来
写任何ffmpeg提取音频命令之前,先确认电脑上真的能调用到 ffmpeg。打开终端(Windows 用 PowerShell 或命令提示符),输入下面这行:
ffmpeg -version
能打印出版本号和一长串 configuration 信息,就说明装好了。如果提示「不是内部或外部命令」或者 command not found,按系统装一下:
- Windows:到 ffmpeg 官网的下载页,选 Windows 下的编译版本(常见的是 gyan.dev 或 BtbN 的压缩包),解压后把里面的
bin文件夹路径加进系统环境变量 PATH,重新打开终端再试。 - Mac:装了 Homebrew 的话,一行
brew install ffmpeg。 - Linux:Ubuntu、Debian 用
sudo apt install ffmpeg,其他发行版用各自的包管理器。
Windows 上常见的坑是 PATH 没配对,或者配完没重开终端。很多调用 ffmpeg 的 Python 脚本报错,根子也在这里,配好以后同一条命令就能正常往下走。

每个参数是干什么的
后面所有写法都是在这几个参数上做加减,先把它们的意思弄明白,改起来就不怕:
| 参数 | 意思 | 什么时候用 |
|---|---|---|
-i | 指定输入文件 | 每条都要,后面跟视频路径 |
-vn | 丢掉视频画面 | 只要声音时都加上,不加的话输出 mp4 会连画面一起带 |
-c:a | 选音频编码器 | 转 MP3 写 libmp3lame,原样拷贝写 copy |
-q:a | 按质量档位压缩 | 日常转 MP3,不在乎精确码率 |
-b:a | 指定固定码率 | 对方要求 128k、192k 这类固定值 |
-ss / -to | 开始和结束时间 | 只要其中一段 |
-ar / -ac | 采样率和声道数 | 给语音识别程序准备素材 |
参数的顺序有讲究:-i 前面的参数作用在输入上,后面的作用在输出上,最后一个不带横杠的就是输出文件名。ffmpeg 会按输出文件的后缀猜容器格式,所以后缀别写错。
ffmpeg mp4转mp3:单个文件的两种写法
ffmpeg 自己没有 MP3 编码器,转 MP3 用的是 libmp3lame 这个外部库,常见的完整编译版都带着。按质量控制方式,有两种写法。
这也是搜「ffmpeg mp4转mp3」时多数人想找的那条,先看可变码率的写法。
按质量档位转(可变码率,日常够用)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
-q:a 的取值是 0 到 9,数字越小音质越好、文件越大。ffmpeg 官方维基的说法是 0 到 3 一般听不出和原音的差别,4 是默认值,6 算「可以接受」。我听歌用 2,录音、讲座这类人声素材用 5 就够了,文件能小一半,耳朵听不太出来。
按固定码率转(对方要求固定比特率时)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3
ffmpeg mp4转mp3 想要固定码率时,换成下面这条。有的车机、老播放器或者上传平台只认固定码率,就用 -b:a。常见取值 128k、192k、256k、320k。原视频的声音本来就是压缩过的,码率给得再高也补不回细节,192k 在多数场合已经够了。
不转码,直接把音轨拷出来
上面两条都会重新编码,转一遍就多一次损失,长视频也慢。如果对格式没要求,可以先看看视频里的音轨是什么编码:
ffprobe -v error -select_streams a -show_entries stream=codec_name -of csv=p=0 input.mp4
手机和相机拍的 MP4,输出多半是 aac。这时候直接拷贝,几秒就完,音质和原视频一模一样。拷贝不经过解码和重新压缩,两三个小时的录像也只是读一遍文件的时间:
ffmpeg -i input.mp4 -vn -c:a copy output.m4a
注意后缀要和编码对上:aac 放进 .m4a,opus 放进 .ogg 或 .opus,本来就是 mp3 的才能拷进 .mp3。把 aac 硬塞进 mp3 后缀会直接报错,后面报错那一节会讲。
视频提取音频命令进阶:截一段、选音轨、转成识别用的 WAV
前面的视频提取音频命令都是整段处理,下面三种是我在剪辑时经常要加的变化。
只要中间一段
ffmpeg -ss 00:01:30 -to 00:02:45 -i input.mp4 -vn -c:a libmp3lame -q:a 2 clip.mp3
-ss 是开始时间,-to 是结束时间,放在 -i 前面定位快。想写时长而不是结束点,就把 -to 换成 -t 75,表示截 75 秒。
视频里有好几条音轨
电影文件、游戏录屏常常带多条音轨(国语、英语、解说)。先用 ffprobe 看清楚,再用 -map 指定第几条,编号从 0 开始:
ffmpeg -i movie.mkv -map 0:a:1 -c:a libmp3lame -q:a 2 track2.mp3
转成语音识别常用的 WAV
很多语音识别程序要求 16 kHz 采样、单声道、16 位的 WAV,这样写:
ffmpeg -i input.mp4 -vn -ar 16000 -ac 1 -c:a pcm_s16le speech.wav
一个文件夹批量处理
手里有一堆视频要抽音频,写个循环就行。下面三种按你用的终端选一种,都是把当前文件夹里所有 mp4 转成同名 mp3:
Windows 命令提示符:
for %i in (*.mp4) do ffmpeg -i "%i" -vn -c:a libmp3lame -q:a 2 "%~ni.mp3"
Windows PowerShell:
Get-ChildItem *.mp4 | ForEach-Object { ffmpeg -i $_.FullName -vn -c:a libmp3lame -q:a 2 ($_.BaseName + ".mp3") }
Mac 和 Linux(批量做 ffmpeg mp4转mp3 时我常用的是这条):
for f in *.mp4; do ffmpeg -i "$f" -vn -c:a libmp3lame -q:a 2 "${f%.*}.mp3"; done
这几条批量写法本质上就是把单个文件的ffmpeg提取音频命令套进一个循环。文件名里有空格、中文都没关系,关键是变量两边的双引号别省。命令提示符里写进 .bat 文件时,%i 要写成 %%i。
跑ffmpeg提取音频命令时常见的几种报错
报错时别急着重装,先看终端最后几行红字,ffmpeg 的提示其实写得很直白。我遇到过的主要是下面五种:
- Output file does not contain any stream:视频本身没有音轨,比如静音录屏。用 ffprobe 看一眼就知道。
- Could not find tag for codec aac … not currently supported in container:用了
-c:a copy却把 aac 写进了 .mp3。改成 .m4a,或者去掉 copy 改用 libmp3lame 转码。 - Unknown encoder 'libmp3lame':装的是精简版,没带 MP3 编码库。换一个完整编译版,或者先输出 m4a。
- File already exists. Overwrite?:输出文件已存在,ffmpeg 停下来问你。批量时在命令开头加
-y自动覆盖,或者加-n跳过已有文件。 - No such file or directory:路径或文件名写错,多半是空格没加引号,或者终端当前不在视频所在的文件夹。
抽完音频还想转成文字
很多人抽音频的下一步是转文字:会议录像要出纪要,网课要整理笔记。如果打算自己在电脑上跑开源的 Whisper 这类识别模型,用上面那条转 16 kHz 单声道 WAV 的ffmpeg提取音频命令先处理一遍,模型读起来省事。不少识别脚本内部也是调用 ffmpeg 读音频,所以 ffmpeg 没装好、PATH 没配,识别脚本会先在这一步报错。
不想在电脑上配环境,也可以直接把录音交给在线转写工具。提词匠的音频转文字支持 mp3、m4a、wav 等常见格式,按 1 积分 / 分钟计费,转完能导出 TXT、Word,带时间的结果还能导出 SRT 字幕。普通用户单次不超过 60 分钟、文件 500 MB 以内,会员是 120 分钟、2 GB。
不想敲命令时,手机上怎么抽 MP3
命令行适合批量和精细控制。偶尔一两个视频、视频还在手机里,我会直接用提词匠,省得传到电脑。提词匠有 iPhone App、安卓 App 和微信小程序,同一个微信号登录,积分三端通用。
首页「常用工具」里点视频转MP3,选一个视频上传就行,按次计费,1 积分一次。

上传时有进度圈,转换在云端完成,所以要联网。

传完进入结果页,可以先试听再保存。

和自己敲ffmpeg提取音频命令比,提词匠省掉了安装和配环境,但也有几点限制要先知道:
- 一次只处理一个视频,没有批量,这正是命令行的强项;
- 输出固定是 MP3,不能选码率,也不能截一段,想要片段得先剪好视频;
- 小程序里「保存到相册」会存成黑色画面的视频,要真 MP3 就点「发送给好友」发到文件传输助手;App 里点「保存到手机」,存的是 MP3 文件;
- 电脑上能用微信电脑版打开小程序,但转出的 MP3 不能直接存到电脑,同样要发给文件传输助手再另存。
我的分工很简单:电脑上成批的素材、要截片段或者要 WAV 的,用上面的ffmpeg提取音频命令;手机里临时一两个视频,交给提词匠。把单个文件那条命令和批量循环那条存进备忘录,下次改个文件名就能直接用。