一、LAME介绍
lame是一个有名的开源mp3编码库,这篇文章将会介绍如何调用lame库的接口编码出mp3。
二、lame库编译
查看博客:linux下MP3编码库libmp3lame的移植
三、MP3叫介绍
mp3(MPEG Layer III)这种格式在生活中很常见,但是mp3有很多种参数,这里讨论一下mp3编码所必须知道的一些参数。
- 采样率(sampleRate):采样率越高声音的还原度越好。
- 比特率(bitrate):每秒钟的数据量,越高音质越好。
- 声道数(channels):声道的数量,通常只有单声道和双声道,双声道即所谓的立体声。
- 比特率控制模式:ABR、VBR、CBR,这3中模式含义很容易查询到,不在赘述。
四、MPEG Layer III
MPEG有几个版本的协议,不同版本的协议能够支持的参数能力是不同的。编码库的使用者必须清楚不同版本的区别才能正确的设置参数。
有以下3个版本的协议,MPEG1、MPEG2、MPEG2.5。其中MPEG2.5是非官方的标准,但是流传广泛,所以基本也都支持。他们的区别主要集中在支持的比特率和采样率不同。
4.1 采样率支持(Hz)
4.2 比特率支持(bit/s)
五、编码流程
使用lame库只需要包含lame.h头文件,编码mp3基本上遵循以下的流程,
5.1 初始化编码参数
lame_init
:初始化一个编码参数的数据结构,给使用者用来设置参数。
5.2 设置编码参数
lame_set_in_samplerate
:设置被输入编码器的原始数据的采样率。lame_set_out_samplerate
:设置最终mp3编码输出的声音的采样率,如果不设置则和输入采样率一样。lame_set_num_channels
:设置被输入编码器的原始数据的声道数。lame_set_mode
:设置最终mp3编码输出的声道模式,如果不设置则和输入声道数一样。参数是枚举,STEREO
代表双声道,MONO
代表单声道。lame_set_VBR
:设置比特率控制模式,