ffmpeg内置的音频解码器为:
- libfdk-aac
- aac
以下操作为从input.mp4文件提取音频为output.mp3:
ffmpeg -i input.mp4 -vn -c:a copy output.mp3
其中
-vn
:移除视频-c:a
:指定音频编码器copy
:直接复制,不经过重新编码
今天,我从 bilibili.com 下载了一个input.flv的视频,根据以上命令修改:
ffmpeg -i input.flv -vn -c:a copy output.mp3
产生错误无法提取。
原因分析
原因是没有mp3的解码器。
因为提取音频的操作其实是移除视频内容,mp4文件中有mp3的音频文件,可直接生成mp3文件。
而flv文件中的音频非mp3格式,没有相应的音频解码器,所以无法转换。
解决办法有2个:
1 生成 aac 的音频文件
因为ffmpeg默认为aac音频解码器,可将flv文件内置aac音轨的提取出来。
ffmpeg -i input.flv -vn -c:a copy output.aac
2 下载mp3音频解码器
下载 mp3 音频解码器: libmp3lame
- LAME MP3 Encoder (源码)
- libmp3lame.dll 免费下载 | DLL‑files.com (windows下载 libmp3lame.dll文件,放在C:\Windows\System32 目录下)
指定音频解码器为 libmp3lame
ffmpeg -i input.flv -vn -c:a libmp3lame output.mp3