PCM->MP3

來源 :http://m.itdecent.cn/p/06eaefee3314


/**

?wav文件轉(zhuǎn)mp3文件

?@param wavPath wav文件路徑(輸入)

?@param mp3Path mp3文件路徑(輸出)

?*/

- (void)converWav:(NSString*)wavPathtoMp3:(NSString*)mp3PathsuccessBlock:(successBlock)block{


? ? @try{

? ? ? ? FILE *fwav = fopen([wavPath cStringUsingEncoding:NSASCIIStringEncoding], "rb");

? ? ? ? fseek(fwav, 1024*4, SEEK_CUR); //跳過源文件的信息頭,不然在開頭會有爆破音

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


? ? ? ? lame=lame_init();//初始化

? ? ? ? lame_set_in_samplerate(lame, 44100.0); //設(shè)置wav的采樣率

? ? ? ? lame_set_num_channels(lame, 2); //聲道,不設(shè)置默認(rèn)為雙聲道

? ? ? ? lame_init_params(lame);


? ? ? ? constintPCM_SIZE =640*2;//雙聲道*2 單聲道640即可

? ? ? ? const int MP3_SIZE = 8800; //計算公式pcm_size * 1.25 + 7200

? ? ? ? shortintpcm_buffer[PCM_SIZE];

? ? ? ? unsignedcharmp3_buffer[MP3_SIZE];


? ? ? ? intread, write;


? ? ? ? do{

? ? ? ? ? ? //將文件讀進(jìn)內(nèi)存

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

? ? ? ? ? ? if(read ==0) {

? ? ? ? ? ? ? ? //當(dāng)read為0,說明pcm文件已經(jīng)全部讀取完畢,調(diào)用lame_encode_flush即可。

? ? ? ? ? ? ? ? write =lame_encode_flush(lame, mp3_buffer, MP3_SIZE);

? ? ? ? ? ? }else { //當(dāng)read不為0,調(diào)用lame_encode_buffer_xxx進(jìn)行轉(zhuǎn)碼

? ? ? ? ? ? ? ? //雙聲道千萬要使用lame_encode_buffer_interleaved這個函數(shù)

? ? ? ? ? ? ? ? //32位、單聲道需要調(diào)用其他函數(shù),具體看代碼后面的說明

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

? ? ? ? ? ? }

? ? ? ? ? ? //保存mp3文件

? ? ? ? ? ? fwrite(mp3_buffer, write,1, fmp3);

? ? ? ? }while(read !=0);

? ? ? ? //記得各種關(guān)閉

? ? ? ? lame_close(lame);

? ? ? ? fclose(fmp3);

? ? ? ? fclose(fwav);

? ? }@catch(NSException *exception) {

? ? ? ? NSLog(@"catch exception");

? ? }@finally{

? ? ? ? block();//成功轉(zhuǎn)碼后調(diào)用

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容