本文demo:XBVoiceTool
包括录音、播放PCM、播放MP3|AAC,混音、实时AAC编码pcm、实时MP3编码pcm等
度娘搜lame转mp3,基本上都是把pcm文件转mp3文件的,不符合录音过程实时编码的需求,记录下实时编码的办法,其实就几行代码
- (void)encodePCMData:(void *)pcmData len:(int)len completeBlock:(MP3EncodeCompleteBlock)completeBlock
{
int mp3DataSize = len;
unsigned char mp3Buffer[mp3DataSize];
/**
这里的len / 2,是因为我们录音数据是char *类型的,一个char占一个字节。而这里要传的数据是short *类型的,一个short占2个字节
lame_encode_buffer //录音数据单声道16位整形用这个方法
lame_encode_buffer_interleaved //录音数据双声道交错用这个方法
lame_encode_buffer_float //录音数据采样深度32位浮点型用这个方法
*/
int encodedBytes = lame_encode_buffer(lameClient, pcmData, pcmData, len / 2, mp3Buffer, mp3DataSize);
if (completeBlock)
{
completeBlock(mp3Buffer,encodedBytes);
}
}