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

时间:2017-03-22 09:48:44

标签: android audio ffmpeg bitrate

我们希望将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

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

2 个答案:

答案 0 :(得分:8)

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

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

结果:这对我有用。但是-qscale:a 5使FFmpeg为您确定平均比特率。使用一个(320k)MP3文件,我得到了 134kbps 的近距离转换。这是expected,因为:

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

解决方案
而不是使内部mp3帧保持不同的比特率(改变以适应“当前”感知音频,例如:使用比“忙”音频部分更小的比特/字节比率来认为“静音”部分),所以只需根据需要设置常数比特率 128kbps

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

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

答案 1 :(得分:5)

我使用这个shellcript来反复访问这个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"