音视频iOS开发技术讨论

lame实时mp3编码录音过程中的pcm数据

2018-11-29  本文已影响0人  huisedediao

本文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);
    }
}
上一篇下一篇

猜你喜欢

热点阅读