美文网首页iOS集合
iOS 单声道wav转mp3 lame

iOS 单声道wav转mp3 lame

作者: 沐北 | 来源:发表于2019-04-29 13:37 被阅读0次

因为科大讯飞录音上传需要上传16000 16位 单声道文件 所以录制的wav为单声道,转码的时候出现了一些问题,通过修改一些lame的设置改正了


+(void)convertWavToMp3:(NSString*)wavFilePath withSavePath:(NSString*)savePath withBlock:(RecordConvertBlock)block {

    @try{

        intread, write;



        FILE*pcm =fopen([wavFilePathcStringUsingEncoding:1],"rb");  //source 被转换的音频文件位置

        fseek(pcm,4*1024,SEEK_CUR);                                  //skip file header

        FILE*mp3 =fopen([savePathcStringUsingEncoding:1],"wb+");  //output 输出生成的Mp3文件位置



        constintPCM_SIZE =8192;

        constintMP3_SIZE =8192;

        shortintpcm_buffer[PCM_SIZE*2];

        unsignedcharmp3_buffer[MP3_SIZE];



        lame_tlame =lame_init();

        lame_set_in_samplerate(lame, 16000);

        lame_set_VBR(lame, vbr_default);

        lame_init_params(lame);

        lame_set_num_channels(lame,1); //***修改转码的mp3文件为单声道,不设置默认是双声道

        do{

            read =fread(pcm_buffer,sizeof(shortint), PCM_SIZE, pcm); //***双声道第二个参数设置 2*sizeof(shortint)

            if(read ==0)

                write =lame_encode_flush(lame, mp3_buffer, MP3_SIZE);

            else

                write =lame_encode_buffer(lame, pcm_buffer,pcm_buffer, read, mp3_buffer, MP3_SIZE);//***单声道写入

//                write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE); //***双声道写入

            fwrite(mp3_buffer, write,1, mp3);

        }while(read !=0);



        lame_mp3_tags_fid(lame, mp3);

        lame_close(lame);

        fclose(mp3);

        fclose(pcm);

    }

    @catch(NSException *exception) {

        dispatch_async(dispatch_get_main_queue(), ^{

            //更新UI操作

            block(exception.reason);

        });



    }

    @finally {

        dispatch_async(dispatch_get_main_queue(), ^{

            //更新UI操作

            NSLog(@"MP3生成成功: %@",savePath);

            block(nil);

        });



    }



}

相关文章

  • iOS 单声道wav转mp3 lame

    因为科大讯飞录音上传需要上传16000 16位 单声道文件 所以录制的wav为单声道,转码的时候出现了一些问题,通...

  • iOS 录音mp3

    先用 AVAudioRecorder 录音生成 wav格式音频 用lame将wav格式转换成mp3 http://...

  • python音频处理

    环境:ubuntu18ubuntu上要安装ffmpeg 用于mp3转wav 把采样率转为16k 转为单声道

  • 安卓音频开发(四)使用lame把wav转mp3

    在上文中,展示了安卓项目如何构建lame,接下来,我们要使用lame把wav音频转为mp3。上文回顾:lame编译...

  • Lame框架 MP3与WAV互转

    WAV转换成MP3 MP3转换成WAV

  • ANE转Wav转mp3

    ANE中如何调用lame库在iOS平台WAV转换MP3代码中包含了三个功能,输出sayHello,检测耳机是否插入...

  • 1. 使用lame库将PCM编码成MP3格式

    LAME-encoder 源码解析 问题 1. 如何通过WAV文件,获取MP3文件 1. WAV文件解析 1. R...

  • 录音

    iOS录制mp3音频 开源库:Lame (http://lame.sourceforge.net/)divine提...

  • library not found for lmp3lame

    swift工程中,要上传mp3。ios录音出来的格式不支持mp3,需要转。这里用了lame的静态库。出现标题的问题...

  • Android 使用 lame wav 转 mp3 、pcm 转

    前言 最近在研究wav,mp3,pcm之间的相互转换,发现mp3的相关操作,都需要解码mp3或者编码mp3,无法直...

网友评论

    本文标题:iOS 单声道wav转mp3 lame

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