我正在寻找一种方法来批量降低我的大量 mp3 文件集合中的 mp3 比特率。鉴于这一定是一件非常常见的事情,这令人惊讶地困难。
事实上,有数十个甚至数百个帖子询问如何做到这一点,并且数十个公用事业公司可以支付不同金额的费用声称可以做到这一点。环顾四周并尝试了一些免费软件,令我惊讶的是没有一个软件可以轻松完成批量转换/调整的任务。
如果我想转换单个文件,我被告知这是一个不错的方法:
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 无法在不破坏它的情况下输出到同一输入文件,所以脚本首先重命名该文件,以您选择的比特率构建一个新文件,然后删除旧文件。
我相信很多人都会在这里提出改进建议。我当然欢迎使脚本更具可读性的方法。