使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小

Batch reduce bitrate and size of mp3 audio files with ffmpeg

我一直在寻找一种方法来批量降低我大量 mp3 文件的 mp3 比特率。考虑到这一定是一件非常普遍的事情,想做的事情出人意料地困难。

事实上,有几十个,也许数百个帖子来自人们询问如何做到这一点,并且有数十个公用事业公司声称可以做到这一点,但价格不等。环顾四周并试用了一些免费软件,令我惊讶的是 none 使批处理任务 converting/adjustment 变得简单。

如果我想转换单个文件,有人告诉我这是一个不错的方法:

ffmpeg -y -loglevel "error" -i "my_music_file.mp3" -acodec libmp3lame  -ab $BITRATE "my_music_file_new.mp3"

(虽然我更愿意原地更改文件并生成相同的名称。)

我需要一个使用 ffmpeg 的简单 bash 脚本,它将递归地遍历我的音乐目录并更改我的 mp3 文件的比特率。

获得正确的 ffmpeg 并找到选项花了一些时间,但这应该可以做到。

#!/bin/bash
MUSIC="FULL PATH TO YOUR MUSIC FOLDER"
BITRATE=160k
find "${MUSIC}" -name "*.mp3" -execdir echo "{}" \; -exec mv "{}" "{}.mp3" \; -exec ffmpeg -y -loglevel "error" -i "{}.mp3" -acodec libmp3lame  -ab $BITRATE "{}" \; -exec rm "{}.mp3" \;

因为 ffmpeg 不能输出到同一个输入文件而不对它进行核对,脚本首先重命名该文件,以您选择的比特率构建一个新文件,然后删除旧文件。

我相信很多人会在这里提出改进建议。我当然欢迎让脚本更具可读性的方法。