如何使用 FFmpeg 将高比特率 MP3 转换为较低比特率

问题描述 投票:0回答:4

我们想要将 320kbps mp3 文件转换为 128kbps mp3,所以目前我们正在使用下面的 ffmpeg 命令,但它不起作用。

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3

结果:-输出比特率与输入mp3相同。

我们遵循 FFmpeg 编码指南,链接如下:- https://trac.ffmpeg.org/wiki/Encode/MP3

所以请提出任何解决方案。

audio ffmpeg bitrate
4个回答
35
投票

我尝试了您显示的命令(在Windows/命令行上测试):

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3

结果:它对我有用。然而

-qscale:a 5
使 FFmpeg 为您决定平均比特率。通过一个 (320k) MP3 文件,我得到了 134kbps 的近似转换。这是预期的,因为:

lame option   Average kbit/s  Bitrate range kbit/s    ffmpeg option
   -V 5             130           120-150                -q:a 5

解决方案
不要让内部 mp3 帧保持不同的比特率(这些比特率会变化以适应“当前”感知的音频,eg: 认为“静音”部分使用比“繁忙”音频部分更小的比特/字节率),所以只需设置根据您的需要,恒定比特率128kbps

我只需手动将其设置为常量128kbps并明确使用:

ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3

9
投票

我使用这个 shellscript 是为了避免一遍又一遍地访问这个 stackoverflow 页面:)

#!/bin/bash
[[ ! -n $1 ]] && { 
    echo "Usage: mp3convert <input.mp3> <output.mp3> <bitrate:56/96/128/256> <channels> <samplerate>"
    exit 0
}
set -x # print next command
ffmpeg -i "$1" -codec:a libmp3lame -b:a "$3"k -ac "$4" -ar $5 "$2"

3
投票

确保您的 FFmpeg 版本已启用

libmp3lame
。所选答案对我不起作用,但这确实有效:

ffmpeg -v debug -i "input.mp3" -c:a libmp3lame \
   -b:a 128k -ac 2 -ar 44100 -vn "output.mp3"

-ac 2
- 输出有 2 个(立体声)音频通道
-ar 44100
- 44100Hz 的采样率,非常适合高品质音乐。

尽管如此,在 2022 年我不建议转换为 128kbps,因为现在的存储空间更加便宜和丰富。

我认为

-b:a 192k
对于大多数人来说在压缩和质量之间达到了最佳平衡(除非你是一个拥有 1000 美元耳机的发烧友,即便如此,你还是最好使用 FLAC)。


0
投票

Ubuntu 22:

$ ffmpeg -v debug -i "input.file" -c:libmp3lame -b:a 32k \
             -ac 1 -ar 44100 -vn "out.file"

然而 Ubuntu 18 给出了一个错误,所以工作命令:

$ ffmpeg    -i rassel.mp3     \
             -codec:a libmp3lame    -b:a 32k  \
              -ar 44100    -ac 1     rassel-out.mp3
© www.soinside.com 2019 - 2024. All rights reserved.