知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
iOS瘋狂詳解之錄制音頻轉換成Mp3
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):101
應用第三方 lame ,Mp3音頻編碼器.
應用 AVAudioRecorder 進行音頻錄制之前,進行參數(shù)設置:
NSString *recordTemporaryPathString = [NSString stringWithFormat:@"%@/temporary",self.audioTemporarySavePath];
//LinearPCM 是iOS的一種無損編碼格式,然則體積較為宏大年夜
//灌音設置
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];
//灌音格式 無法應用
[recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey];
//采樣率
[recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey];//44100.0
//通道數(shù)
[recordSettings setValue :[NSNumber numberWithInt:2] forKey: AVNumberOfChannelsKey];
//線性采樣位數(shù)
//[recordSettings setValue :[NSNumber numberWithInt:16] forKey: AVLinearPCMBitDepthKey];
//音頻質量,采樣質量
[recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];
#include "lame.h"
- (void)audio_PCMtoMP3
{
NSString *mp3FileName = [self.audioFileSavePath lastPathComponent];
mp3FileName = [mp3FileName stringByAppendingString:@".mp3"];
NSString *mp3FilePath = [self.audioTemporarySavePath stringByAppendingPathComponent:mp3FileName];
@try {
int read, write;
FILE *pcm = fopen([self.audioFileSavePath cStringUsingEncoding:1], "rb"); //source 被轉換的音頻文件地位
fseek(pcm, 4*1024, SEEK_CUR); //skip file header
FILE *mp3 = fopen([mp3FilePath cStringUsingEncoding:1], "wb"); //output 輸出身成的Mp3文件地位
const int PCM_SIZE = 8192;
const int MP3_SIZE = 8192;
short int pcm_buffer[PCM_SIZE*2];
unsigned char mp3_buffer[MP3_SIZE];
lame_t lame = lame_init();
lame_set_in_samplerate(lame, 11025.0);
lame_set_VBR(lame, vbr_default);
lame_init_params(lame);
do {
read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
if (read == 0)
write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
else
write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
fwrite(mp3_buffer, write, 1, mp3);
} while (read != 0);
lame_close(lame);
fclose(mp3);
fclose(pcm);
}
@catch (NSException *exception) {
NSLog(@"%@",[exception description]);
}
@finally {
self.audioFileSavePath = mp3FilePath;
NSLog(@"MP3生成成功: %@",self.audioFileSavePath);
}
}
更多iOS猖狂詳解:http://blog.csdn.net/wanglongblog
相關案例查看更多
相關閱讀
- 小程序開發(fā)聯(lián)系方式
- 昆明小程序定制開發(fā)
- 汽車拆解系統(tǒng)
- 百度排名
- 云南網站建設案例
- 網站沒排名
- 前端開發(fā)
- 昆明做網站建設的公司排名
- 云南網站建設專業(yè)品牌
- 汽車報廢回收管理系統(tǒng)
- APP
- 前端
- 云南網站建設方法
- 大理網站建設公司
- 汽車回收系統(tǒng)
- 報廢車回收管理系統(tǒng)
- painter
- 云南小程序開發(fā)制作
- 小程序開發(fā)平臺前十名
- 網絡公司哪家好
- 小程序的開發(fā)公司
- 網站建設百度官方
- 云南小程序開發(fā)推薦
- 二叉樹
- 網站建設制作
- 網站開發(fā)哪家好
- 旅游網站建設
- web服務
- 微信分銷系統(tǒng)
- 云南電商網站建設