«

在 macOS 上使用 FFmpeg 将 MP4 视频中的音频提取并转换为 MP3 格式

chunkuan 发布于 阅读:8 命令行


在 macOS 上使用 FFmpeg 将 MP4 视频中的音频提取并转换为 MP3 格式非常简单。以下是各种方法和详细说明:

1. 基础命令(最常用)

基本转换

# 将MP4转换为MP3,使用默认质量
ffmpeg -i input_video.mp4 output_audio.mp3

# 指定输出比特率(如 192k)
ffmpeg -i input_video.mp4 -b:a 192k output_audio.mp3

高质量转换

# 使用 VBR(可变比特率)质量参数,范围0-9,0最高质量(文件最大)
ffmpeg -i input_video.mp4 -q:a 0 output_audio.mp3
# 或
ffmpeg -i input_video.mp4 -aq 0 output_audio.mp3

# 常用质量设置:
ffmpeg -i input_video.mp4 -q:a 2 output_audio.mp3  # 高质量(约190kbps)
ffmpeg -i input_video.mp4 -q:a 4 output_audio.mp3  # 中等质量(约130kbps)

2. 高级选项和参数详解

控制音频流

# 只提取音频流,忽略视频
ffmpeg -i input_video.mp4 -vn output_audio.mp3

# 提取特定的音频轨道(如果有多个)
ffmpeg -i input_video.mp4 -map 0:a:0 output_audio.mp3  # 第一个音频流
ffmpeg -i input_video.mp4 -map 0:a:1 output_audio.mp3  # 第二个音频流

设置比特率

# 恒定比特率(CBR)
ffmpeg -i input_video.mp4 -b:a 320k output_audio.mp3          # 320kbps(最高质量)
ffmpeg -i input_video.mp4 -b:a 256k output_audio.mp3          # 256kbps
ffmpeg -i input_video.mp4 -b:a 192k output_audio.mp3          # 192kbps(常用)
ffmpeg -i input_video.mp4 -b:a 128k output_audio.mp3          # 128kbps

# 可变比特率(VBR)预设
ffmpeg -i input_video.mp4 -c:a libmp3lame -q:a 0 output_audio.mp3    # 0-9,0最好

控制采样率和声道

# 设置采样率(如 44100Hz 或 48000Hz)
ffmpeg -i input_video.mp4 -ar 44100 output_audio.mp3

# 设置声道数
ffmpeg -i input_video.mp4 -ac 2 output_audio.mp3            # 立体声(默认)
ffmpeg -i input_video.mp4 -ac 1 output_audio.mp3            # 单声道

3. 完整示例命令

# 推荐的高质量转换命令
ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 2 -ar 44100 -ac 2 output.mp3

# 参数解释:
# -i video.mp4        输入文件
# -vn                 不处理视频流
# -c:a libmp3lame     使用LAME MP3编码器
# -q:a 2              VBR质量等级2(高质量)
# -ar 44100          采样率44.1kHz(CD质量)
# -ac 2              立体声
# output.mp3         输出文件名

4. 批量处理多个文件

使用循环

# 批量转换当前目录下所有MP4文件
for file in *.mp4; do
    ffmpeg -i "$file" -vn -c:a libmp3lame -q:a 2 "${file%.mp4}.mp3"
done

# 批量转换并保持原文件名
find . -name "*.mp4" -exec bash -c 'ffmpeg -i "$0" -vn -c:a libmp3lame -q:a 2 "${0%.mp4}.mp3"' {} \;

批量处理到指定目录

# 创建输出目录
mkdir -p mp3_output

# 批量转换并保存到指定目录
for file in *.mp4; do
    ffmpeg -i "$file" -vn -c:a libmp3lame -q:a 2 "mp3_output/${file%.mp4}.mp3"
done

5. 保留元数据(ID3标签)

# 复制元数据
ffmpeg -i input_video.mp4 -vn -c:a libmp3lame -q:a 2 -map_metadata 0 output.mp3

# 添加自定义元数据
ffmpeg -i input_video.mp4 -vn -c:a libmp3lame -q:a 2 \
  -metadata title="歌曲标题" \
  -metadata artist="艺术家" \
  -metadata album="专辑名称" \
  -metadata year="2024" \
  output.mp3

6. 提取特定时间段的音频

# 从30秒到2分30秒
ffmpeg -i input_video.mp4 -ss 00:00:30 -to 00:02:30 -vn -c:a libmp3lame output.mp3

# 从1分钟开始,提取60秒
ffmpeg -i input_video.mp4 -ss 00:01:00 -t 00:01:00 -vn -c:a libmp3lame output.mp3

7. 特殊场景处理

处理有多个音频轨道的视频

# 列出所有流
ffmpeg -i input_video.mp4

# 提取第二个音频轨道(比如评论音轨)
ffmpeg -i input_video.mp4 -map 0:a:1 -c:a libmp3lame -q:a 2 comment_track.mp3

从在线视频提取

# 需要先下载视频,或者直接处理在线源(如果支持)
ffmpeg -i "https://example.com/video.mp4" -vn -c:a libmp3lame output.mp3

处理非常大的文件

# 使用快速提取模式(如果视频音频编码已经是MP3)
ffmpeg -i large_video.mp4 -vn -c:a copy output.mp3

# 但如果音频不是MP3格式,还是要转换:
ffmpeg -i large_video.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3

8. 创建便捷脚本

创建转换脚本 video2mp3.sh

#!/bin/bash
# 用法:./video2mp3.sh 输入文件.mp4 [输出文件.mp3] [质量0-9]

INPUT="$1"
OUTPUT="${2:-${INPUT%.mp4}.mp3}"
QUALITY="${3:-2}"

echo "正在转换: $INPUT → $OUTPUT"
echo "质量等级: $QUALITY (0=最高, 9=最低)"

ffmpeg -i "$INPUT" -vn -c:a libmp3lame -q:a "$QUALITY" -ar 44100 -ac 2 "$OUTPUT"

if [ $? -eq 0 ]; then
    echo "✓ 转换成功: $OUTPUT"

    # 显示文件信息
    filesize=$(du -h "$OUTPUT" | cut -f1)
    duration=$(ffprobe -i "$OUTPUT" -show_entries format=duration -v quiet -of csv="p=0")
    duration_fmt=$(printf "%02d:%02d" $((duration/60)) $((duration%60)))

    echo "文件大小: $filesize"
    echo "音频时长: $duration_fmt"
else
    echo "✗ 转换失败"
    exit 1
fi

给脚本执行权限并使用

chmod +x video2mp3.sh

# 基本用法
./video2mp3.sh myvideo.mp4

# 指定输出文件名
./video2mp3.sh myvideo.mp4 output.mp3

# 指定质量(0最高质量,9最低质量)
./video2mp3.sh myvideo.mp4 output.mp3 0

9. 推荐的命令组合

对于大多数情况,使用这个命令就够了:

ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 -ar 44100 -ac 2 output.mp3

如果想快速提取且不关心压缩质量(文件会稍大):

ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 0 output.mp3

如果想得到最小文件(质量较低):

ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 9 -ar 22050 -ac 1 output.mp3

10. 查看转换进度和验证

# 显示详细进度
ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3 -progress /dev/stdout

# 转换完成后验证
ffprobe output.mp3 2>&1 | grep -E "Duration|Audio|bitrate"

# 快速检查
file output.mp3
mp3info output.mp3  # 如果安装了mp3info

安装提示

如果还没有安装 FFmpeg:

# 使用 Homebrew 安装
brew install ffmpeg

# 验证安装
ffmpeg -version

这个工具非常强大,一次安装后就可以处理几乎所有的音视频转换需求。

macos ffmpeg mp4提取声音 mp3