美文网首页
腾讯云实时音视频同步的录音PCM文件转MP3格式

腾讯云实时音视频同步的录音PCM文件转MP3格式

作者: 神一样的队友 | 来源:发表于2021-09-17 17:19 被阅读0次

    试了很多次,腾讯云录音时分辨率需要设置22050.0

    @try {

            FILE*fwav =fopen([wavPathc StringUsingEncoding:NSASCIIStringEncoding],"rb");

            fseek(fwav, 1024*4, SEEK_CUR); //跳过源文件的信息头,不然在开头会有爆破音

            FILE*fmp3 =fopen([mp3Path cStringUsingEncoding:NSASCIIStringEncoding],"wb");

            lame=lame_init();

            lame_set_in_samplerate(lame, 22050.0); //设置wav的采样率

    //        lame_set_num_channels(lame, 2); //声道,不设置默认为双声道

            lame_set_brate(lame, 16);//比特率

            lame_set_VBR(lame, vbr_default);

            lame_init_params(lame);

    //        const int PCM_SIZE = 640 * 2; //双声道*2 单声道640即可

    //        const int MP3_SIZE = 8800; //计算公式wav_buffer.length * 1.25 + 7200

            const intPCM_SIZE =8192;//双声道*2 单声道640即可

            const int MP3_SIZE = 8192; //计算公式wav_buffer.length * 1.25 + 7200

            short int pcm_buffer[PCM_SIZE*2];

            unsigned char mp3_buffer[MP3_SIZE];

            int read, write;

            do{

                read =fread(pcm_buffer,sizeof(shortint), PCM_SIZE, fwav);

                if(read ==0) {

                    write =lame_encode_flush(lame, mp3_buffer, MP3_SIZE);

                }else{

                    write =lame_encode_buffer_interleaved(lame, pcm_buffer, read/2, mp3_buffer, MP3_SIZE);

    //                write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);

                }

                fwrite(mp3_buffer, write,1, fmp3);

            }while(read !=0);

            lame_close(lame);

            fclose(fmp3);

            fclose(fwav);

        }@catch(NSException *exception) {

            NSLog(@"catch exception");

        }@finally{

            block();

        }

    相关文章

      网友评论

          本文标题:腾讯云实时音视频同步的录音PCM文件转MP3格式

          本文链接:https://www.haomeiwen.com/subject/ichsgltx.html