在 macOS 用 FFmpeg 命令行裁剪 MP3 文件
在 macOS 命令行中裁剪 MP3 文件,最常用的工具是 FFmpeg。以下是详细的方法:
1. 首先确保安装了 FFmpeg
# 使用 Homebrew 安装(推荐)
brew install ffmpeg
# 如果没有 Homebrew,先安装 Homebrew:
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. 基本的 MP3 裁剪命令
按时间裁剪(最常用)
# 语法:
# ffmpeg -i 输入文件.mp3 -ss 开始时间 -to 结束时间 -c copy 输出文件.mp3
# 或使用 -t 表示持续时间
# 示例1:从第30秒裁剪到第1分30秒(时长1分钟)
ffmpeg -i input.mp3 -ss 00:00:30 -to 00:01:30 -c copy output.mp3
# 示例2:从第10秒开始,裁剪30秒时长
ffmpeg -i input.mp3 -ss 00:00:10 -t 00:00:30 -c copy output.mp3
# 示例3:简单的写法(分:秒)
ffmpeg -i input.mp3 -ss 0:30 -t 60 -c copy output.mp3
参数说明:
-ss HH:MM:SS或-ss 秒数:开始时间点-to HH:MM:SS:结束时间点-t HH:MM:SS:持续时间-c copy:直接复制流,不重新编码,处理速度极快- 如果不加
-c copy,FFmpeg 会重新编码,速度较慢但兼容性更好
3. 更精确的裁剪方法
方法A:直接裁剪(快速)
# 适合MP3文件,大部分情况下工作良好
ffmpeg -i input.mp3 -ss 00:01:00 -t 00:02:00 -acodec copy output.mp3
方法B:重新编码裁剪(更精确)
# 如果直接复制有问题,使用重新编码
ffmpeg -i input.mp3 -ss 00:01:00 -t 00:02:00 -c:a libmp3lame -q:a 2 output.mp3
4. 其他有用的裁剪场景
裁剪开头部分
# 去掉前15秒,保留剩下的部分
ffmpeg -i input.mp3 -ss 00:00:15 -c copy output.mp3
裁剪结尾部分
# 方法1:使用持续时间(比如只保留前2分钟)
ffmpeg -i input.mp3 -t 00:02:00 -c copy output.mp3
# 方法2:从结尾向前裁剪(需要知道总时长)
# 先查看文件信息:
ffmpeg -i input.mp3 2>&1 | grep Duration
# 假设总时长3:45,想要去掉最后45秒
ffmpeg -i input.mp3 -t 00:03:00 -c copy output.mp3
批量裁剪多个文件
# 使用循环批量处理
for file in *.mp3; do
ffmpeg -i "$file" -ss 00:00:10 -t 00:01:00 -c copy "trimmed_${file}"
done
# 或者使用find命令
find . -name "*.mp3" -exec bash -c 'ffmpeg -i "$0" -ss 00:00:30 -t 00:02:00 -c copy "${0%.mp3}_trimmed.mp3"' {} \;
5. 使用 SoX(另一种选择)
# 安装 SoX(如果需要更多音频处理功能)
brew install sox
# 裁剪MP3(SoX需要libmad支持MP3,也可以先转WAV再处理)
sox input.mp3 output.mp3 trim 10 30 # 从10秒开始,裁剪30秒
# 或
sox input.mp3 output.mp3 trim 0:10 =0:40 # 从10秒到40秒
6. 实用技巧和示例
查看MP3文件信息
# 查看详细音视频信息
ffmpeg -i input.mp3
# 只查看时长
ffprobe -i input.mp3 -show_entries format=duration -v quiet -of csv="p=0"
# 查看格式和流信息
ffprobe -v error -show_format -show_streams input.mp3
精确到毫秒的裁剪
ffmpeg -i input.mp3 -ss 00:01:23.450 -t 00:00:45.678 -c copy output.mp3
保持元数据
ffmpeg -i input.mp3 -ss 00:00:30 -t 60 -c copy -map_metadata 0 output.mp3
常见问题解决
如果遇到错误 "Could not find codec parameters",尝试重新编码:
# 方法1:使用libmp3lame编码器
ffmpeg -i input.mp3 -ss 00:01:00 -t 00:02:00 -acodec libmp3lame -ab 192k output.mp3
# 方法2:先转WAV再转MP3(最兼容)
ffmpeg -i input.mp3 -ss 00:01:00 -t 00:02:00 temp.wav
ffmpeg -i temp.wav -acodec libmp3lame -q:a 2 output.mp3
rm temp.wav
一键裁剪脚本
创建一个 trim_mp3.sh 脚本:
#!/bin/bash
# 用法:./trim_mp3.sh 输入文件.mp3 开始时间 结束时间 [输出文件.mp3]
INPUT="$1"
START="$2"
END="$3"
OUTPUT="${4:-${INPUT%.mp3}_trimmed.mp3}"
ffmpeg -i "$INPUT" -ss "$START" -to "$END" -c copy "$OUTPUT"
echo "裁剪完成:$INPUT → $OUTPUT"
echo "时间范围:$START - $END"
给脚本执行权限并运行:
chmod +x trim_mp3.sh
./trim_mp3.sh music.mp3 0:30 1:30 result.mp3
建议
-
日常使用推荐命令:
# 快速裁剪(最常用) ffmpeg -i input.mp3 -ss 开始时间 -to 结束时间 -c copy output.mp3 -
时间格式灵活:
HH:MM:SS(01:23:45)MM:SS(83:45 即 1:23:45)- 纯秒数 (5025)
-
验证结果:
# 查看裁剪后的文件时长 ffprobe -i output.mp3 -show_entries format=duration -v quiet -of csv="p=0"
这些命令在 macOS 终端中都可以直接使用,FFmpeg 是处理音视频最强大的命令行工具。