MP3比特率编码模式

HIFIVE嗨翻屋

1 MP3比特率

mp3的比特率一般有三种,分别是VBR,ABR和CBR。

1.1 CBR

CBR是constant bitrate的缩写,中文意思是固定比特率。

对于比特率为128 kbps的CBR MP3歌曲来说,歌曲的前128kb描述的是第一秒的声音,第二个128 Kb描述的是第二秒的声音……如果这首歌唱完要640秒钟,那么这首歌的大小就是128kb × 640 = 80Mb = 10MB。所谓128kbps就是128kb每秒的意思。

细心的你会发现,这种编码方式压缩出来的体积会很大,因为码率都是固定的。当然,音质相对于其他两种,会有些优势,虽然这个优势可能微乎其微。

1.2 VBR

VBR(Variable Bitrate)动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率。

简单理解就是,歌曲在细节表现比较丰富的时间点,比特率此时会比较高,其他情况下会比较低,这样就兼顾了音质和体积大小。举个例子:在歌曲的开始,一个人独唱,声音比较简单,我们就用64kb来描述一秒种内的声音;在歌曲的高潮,大家合唱,声音比较复杂,我们就用256kb来描述一秒种内的声音。

1.3 ABR

ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。

举例来说,当指定用192kbps ABR对一段wav文件进行编码时,Lame会将该文件的85%用192kbps固定编码,然后对剩余15%进行动态优化:复杂部分用高于192kbps 来编码、简单部分用低于192kbps来编码。与192kbps CBR相比,192kbps ABR在文件大小上相差不多,音质却提高不少。ABR编码在速度上是VBR编码的2到3倍,在128-256kbps范围内质量要好于CBR。

可以做为 VBR和CBR的一种折衷选择。一般情况下,很少碰到这种编码方式的文件

2 FFMPEG编码

注:libmp3lame 在使用-q:a时 ,CBR设置-b:a将无效。 如果您从FFmpeg Wiki查看MP3编码指南,则会发现-q:a的可能值及其相应的平均比特率。

/* rate control */
if(avctx->flags & CODEC_FLAG_QSCALE){ //VBR
    lame_set_VBR(s->gfp,vbr_default);
    lame_set_VBR_quality(s->gfp,avctx->global_quality /(float)FF_QP2LAMBDA);
}else{
    if(avctx->bit_rate){
       if(s->abr){
           lame_set_VBR(s->gfp,vbr_abr);
           lame_set_VBR_mean_bitrate_kbps(s->gfp,avctx->bit_rate / 1000);
       }else{
           lame_set_brate(s->gfp,avctx->bit_rate / 1000);
       }
    }
}

2.1 可变码率VBR

ffmpeg -i sample.wav -vn -c:a libmp3lame -aq 4 -ac 2 sample.mp3

2.2 恒定码率CBR

ffmpeg -i sample.wav -vn -c:a libmp3lame -b:a 192k -ac 2 sample.mp3

阅读 229
-2 声望
0 粉丝
0 条评论
-2 声望
0 粉丝
文章目录
宣传栏