«

在 macOS 用 FFmpeg 命令行裁剪 MP3 文件

chunkuan 发布于 阅读:4 命令行


在 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

参数说明:

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

建议

  1. 日常使用推荐命令

    # 快速裁剪(最常用)
    ffmpeg -i input.mp3 -ss 开始时间 -to 结束时间 -c copy output.mp3
  2. 时间格式灵活

    • HH:MM:SS (01:23:45)
    • MM:SS (83:45 即 1:23:45)
    • 纯秒数 (5025)
  3. 验证结果

    # 查看裁剪后的文件时长
    ffprobe -i output.mp3 -show_entries format=duration -v quiet -of csv="p=0"

这些命令在 macOS 终端中都可以直接使用,FFmpeg 是处理音视频最强大的命令行工具。

macos ffmpeg mp3裁剪