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

9
我正在寻找一种批量减少mp3比特率的方法,以便处理我的大量mp3文件。尽管这应该是一个非常普遍的需求,但我发现这样做相当困难。
实际上,有许多人询问如何进行此操作,也有数十种甚至数百种不同价格的软件声称可以完成此任务。然而,在查看并尝试了一些免费软件后,我惊讶地发现没有一个能够轻松地完成批量转换/调整的任务。
如果我只需要转换单个文件,我被告知以下是一种不错的方法:
ffmpeg -y -loglevel "error" -i "my_music_file.mp3" -acodec libmp3lame  -ab $BITRATE "my_music_file_new.mp3"

虽然我更希望文件在原地被修改,并且结果文件名不变。

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


1
你可以回答自己的问题,因此考虑将你的问题重写为一个典型的问题,并将你的解决方案作为答案提供。这也让人们知道该问题有一个被接受的解决方案。 - llogan
1个回答

11

需要一点调试才能找到正确的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无法在不破坏原文件的情况下输出到同一输入文件,所以该脚本首先重命名文件,建立一个新的文件,选择您想要的比特率,然后删除旧文件。
我相信很多人会提出改善意见,我当然欢迎让脚本更易读的方法。

在我看来,使用ogg可能更好。以下是更易读的脚本链接:https://gist.github.com/protrolium/e0dbd4bb0f1a396fcb55 - cregox
3
刚刚想到了一种更好的压缩方法。之前有一个320kbps的mp3文件,大小为16MB。现在它被压缩成不到0.7MB,而我听不出任何区别。尝试使用8k进行压缩,但是这样会破坏音质(节省的0.3MB不值得)。所以目前16是最理想的!ffmpeg -i file.mp3 -b:a 8k -acodec libopus file.ogg。Opus似乎比默认的Vorbis要好得多。但是它也不太常用,因此即使是一些新应用程序也不太兼容。 - cregox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接