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

Posted

技术标签:

【中文标题】使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小【英文标题】:Batch reduce bitrate and size of mp3 audio files with ffmpeg 【发布时间】:2017-03-28 21:56:48 【问题描述】:

我正在寻找一种方法来批量降低我大量 mp3 文件的 mp3 比特率。考虑到这一定是一件非常普遍的事情,这令人惊讶地困难。

事实上,有数十个甚至数百个帖子来自人们询问如何做到这一点,并且有数十个公用事业公司声称可以做到这一点,而且金额不等。环顾四周并尝试了一些免费软件,令我惊讶的是,没有一个软件可以轻松完成批量转换/调整的任务。

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

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

(虽然我希望文件被原地更改并产生相同的名称。)

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

【问题讨论】:

您可以为自己的问题提供答案,因此请考虑将您的问题重新编写为典型问题,并提供您的解决方案作为问题的答案。这也让人们知道这个问题有一个公认的解决方案。 【参考方案1】:

获得正确的 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 可能会更好。这是更易读的脚本:gist.github.com/protrolium/e0dbd4bb0f1a396fcb55 刚刚找到了一种更好的压缩方式。有一个 320kbps 的 mp3 16mb 大。这使它变成了不到 0.7mb,我听不出任何区别。但是,尝试使用 8k 时,它坏了(不值得节省 0.3mb)。所以16目前是理想的! ffmpeg -i file.mp3 -b:a 8k -acodec libopus file.ogg。 opus 似乎比默认的 vorbis 优越得多。但它也较少使用,因此即使与一些新应用程序的兼容性也较差。

以上是关于使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 FFMPEG 批量删除音频结尾

FFmpeg:如何在音频文件中间降低几秒钟的音量? [复制]

在MacOS上用ffmpeg批量转换flac为mp3

怎么通过ffmpeg将音频文件转换成Mp3 转

Python 批量提取视频中的音频

Python3 批量提取视频中的音频