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

如何在android中使用ffmpeg将高比特率mp3转换为低比特率,android,audio,ffmpeg,bitrate,Android,Audio,Ffmpeg,Bitrate,我们想将320kbps的mp3文件转换为128kbps的mp3文件,所以目前我们正在使用低于ffmpeg的命令,但它不起作用 ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3 结果:-输出比特率与输入mp3相同 我们遵循FFmpeg编码指南,这里是链接:- 因此,请建议任何解决方案。我尝试了您显示的命令(在Windows/commandline上测试): 结果:它对我很有效。但是,-qscale:a5使FFmpeg决定

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

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3
结果:-输出比特率与输入mp3相同

我们遵循FFmpeg编码指南,这里是链接:-


因此,请建议任何解决方案。

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

结果:它对我很有效。但是,
-qscale:a5
使FFmpeg决定您的平均比特率。使用一个(320k)MP3文件,我得到了一个接近134kbps的转换。这是因为:

解决方案
与其让内部mp3帧保持不同的比特率(不同的比特率可以容纳“当前”感知的音频,例如:与“忙”音频部分相比,使用更小的比特率/字节来考虑“静音”部分),不如根据需要设置常量比特率128kbps

我只需手动并显式地将其设置为常量128kbps

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

我使用此shellscript是为了不反复访问此stackoverflow页面:)

#/bin/bash
[!-n$1]]&{
echo“用法:mp3convert”
出口0
}
set-x#打印下一个命令
ffmpeg-i“$1”-编解码器:libmp3lame-b:a“$3”k-ac“$4”-ar$5“$2”

您是否有正在使用的(Android)FFmpeg版本的链接或名称?经过多年的FFmpeg使用,我傲慢地说,我不需要检查如何设置音频比特率-我可以告诉您。。。在阅读了您的链接之后,我看到您正在查看可变比特率(VBR)设置,其中
-qscale:a5
的目标是平均比特率约为130kbps。无论如何,你的问题听起来像你真的想要一个128kbps的恒定比特率(CBR)。PS:我想知道您的FFmpeg构建,因为您无法通过设置
-qscale:a5
输入320kbps,并获得完全相同的320kbps输出。怎么了?我想检查一下…感谢您的回复,但我们尝试了您给出的命令,但在输出日志中,音频比特率在转换后为320 kbps。因此,我尝试使用android FFmpegAndroid库。因此,它对我们不起作用。下面是日志。但mp3的比特率为320 kbps输出#0,mp3,到“/storage/AUD_14906974795080.mp3”:元数据:TIT2:Jab Tak TALB:MS Dhoni TPE1:arman TSSE:Lavf56.4.101 Stream#0:1:audo:mp344100 Hz,立体声,320 kb/s帧=1 fps=0.0 q=0.0 Lsize=1470kB时间=00:00:15.00比特率=802.2kbit/sSo输出文件
AUD_14906974995080.mp3
与输入文件名不同,对吗?我的意思是之后你有两个单独的文件,都是320k,对吗?我试图将您的问题形象化,如果是关于两个文件@320k,那么只有使用
-codec:a copy
而不是
-codec:a libmp3lame
,您的结果才会出现。。。这就是为什么我需要知道你确切的FFmpeg构建(有链接吗?)来测试完全相同的东西,因为也许你有一个有缺陷的版本……对我来说,20MB的mp3转换成3.6MB的文件。非常感谢-ar实现了我的期望-b:a
lame option   Average kbit/s  Bitrate range kbit/s    ffmpeg option
   -V 5             130           120-150                -q:a 5
ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3
#!/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"