FFmpeg:以原始格式从视频中提取音频或转换为MP3或Ogg Vorbis

本文介绍了如何使用 FFmpeg 从视频中提取音频流而不进行预编码(保留原始格式),或者将生成的音频文件转换为CBR(恒定比特率)或VBR(可变比特率)MP3或Ogg Vorbis。要使用以下FFmpeg示例/命令,必须在系统上安装FFmpeg。 (可选)安装libmp3lame以转换为mp3,并安装libvorbis将提取的音频转换为Ogg Vorbis。
要从视频中提取音频并保持原始音频格式,您需要做的第一件事是检查原始音频格式并知道要使用的文件扩展名 ffprobe (FFmpeg软件包的一部分):

ffprobe myvideo.mp4

交换 myvideo.mp4 视频的文件名(如果视频不在当前文件夹中,则为路径)。在此命令输出的结尾附近,将显示音频流。范例:

...............
Duration: 00:04:19.47, start: 0.000000, bitrate: 1261 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
Metadata:
HANDLER_NAME : VideoHandler
DURATION : 00:04:19.440000000
Stream #0:1(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
Metadata:
DURATION : 00:04:19.467000000

如何使用youtube-dl(命令行)将YouTube播放列表下载并转换为MP3
现在您知道原始的音频格式,请使用以下内容从视频中提取音频,而无需重新编码。

ffmpeg -i myvideo.mp4 -vn -acodec copy audio.ogg

交换 myvideo.mp4 视频文件名/路径,以及 audio.ogg 分配名称和扩展名以用于音频输出文件名。
在这个命令中 -i 用于指定输入视频的路径和文件名。 -vn 跳过视频流的包含, -acodec copy 复制原始音频(无需重新编码)。使用原始源中使用的相同音频格式,从视频中仅提取一部分音频。

ffmpeg -i myvideo.mp4 -ss 00:00:00 -t 00:00:00.0 -vn -acodec copy audio.ogg

-ss 提取的音频时间戳的开始, -t 音频的持续时间。
例如,要从2分钟开始将30秒的音频提取到视频中,并使用与原始源相同的音频编解码器:

ffmpeg -i myvideo.mp4 -ss 00:02:00 -t 00:00:30.0 -vn -acodec copy audio.ogg

要从视频中提取音频并将其转换为mp3,就可以使用(跳过附加内容,因为mp3不能包含视频流 -vn):

ffmpeg -i myvideo.mp4 audio.mp3

FFmpeg通常会从输出文件中输入的扩展名中自动检测输出格式,因此在大多数情况下,您无需指定格式/编解码器。但是,如果指定编解码器,请添加它 -codec:a libmp3lame 转换为mp3:

ffmpeg -i myvideo.mp4 -codec:a libmp3lame audio.mp3

从视频中提取音频,将提取的音频转换为mp3,并指定恒定音频比特率(CBR)质量。

ffmpeg -i myvideo.mp4 -b:a BITRATE audio.mp3

用以下可用的CBR选项替换BITRATE:8k,16k,24k,32k,40k,48k,64k,80k,96k,112k,128k,160k,192k,224k,256k或320k。从视频和音频中提取音频,以可变比特率编码mp3:

ffmpeg -i myvideo.mp4 -codec:a libmp3lame -q:a QUALITY audio.mp3

指定 QUALITY0-9 范围,在哪里 0 最好的 9 最差 4 这是默认值。下表显示了每个FFmpeg VBR选项: 在这里可用使用可变的比特率(VBR)从视频中提取音频,并使用Ogg作为结果容器(必须将Vorbis自动检测为音频格式)。

ffmpeg -i myvideo.mp4 -vn -q:a QUALITY audio.ogg

QUALITY 范围是 -1.010.010.0 最高品质 3 默认值(目标为112kbps)。 请看此页 Ogg Vorbis VBR质量设置详细信息。
在少数情况下,FFmpeg无法自动检测编解码器,请指定 libvorbis 使用 -codec:a,例如:

ffmpeg -i myvideo.mp4 -vn -codec:a libvorbis -q:a QUALITY audio.ogg

在某些情况下,您可以将多个视频批量转换为音频。看看这个批处理过程的示例,其中当前文件夹中的所有mp4视频都转换为可变比特率配置文件值为3的mp3,文件名与原始视频相同,但都是mp3(这恰好是满足您的需求)作为文件扩展名:

for i in *.mp4; do ffmpeg -i "$i" -codec:a libmp3lame -q:a 3 "${i%.*}.mp3"; done

请看 FFmpeg文件 更高级的用法。

Sidebar