如何在android中使用ffmpeg将高比特率mp3转换为更低的比率

And*_*eam 10 audio android ffmpeg bitrate

我们想将320kbps的mp3文件转换为128kbps的mp3,所以目前我们使用的是ffmpeg命令,但它不能正常工作.

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3
Run Code Online (Sandbox Code Playgroud)

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

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

所以请建议任何解决方案.

VC.*_*One 11

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

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3
Run Code Online (Sandbox Code Playgroud)

结果:它对我有用.然而,-qscale:a 5FFmpeg决定你的平均比特率.使用一个(320k)MP3文件,我得到了134kbps的近距离转换.这是预期的:

lame option   Average kbit/s  Bitrate range kbit/s    ffmpeg option
   -V 5             130           120-150                -q:a 5
Run Code Online (Sandbox Code Playgroud)

解决方案:
而不是让内部mp3帧保持不同的比特率(改变以适应"当前"感知音频,例如:与"忙"音频部分相比,使用较小的比特/字节比率来思考"静音"部分),所以只需设置根据需要,可以保持128kbps恒定比特率.

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

ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,20MB mp3 转换为 3.6 MB 文件。多谢 (2认同)

cod*_*ion 5

我使用此shellscript是为了不一次又一次地访问此stackoverflow-page :)

#!/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"
Run Code Online (Sandbox Code Playgroud)