您的位置:首页 > 移动开发 > IOS开发

关于iOS系统里录音的一些设置的心得

2011-12-15 09:53 471 查看
背景: 一款录音软件,要求在录音尽量不失真的情况下,减小录音文件的体积,方便日后上传,以及用户在线收听。

解决原理:大家都知道WAV比mp3大很多,原因之一就是bps低。ok,在不改变2声道的前提下,降低录制的bps。

ok,使用AVAudioRecord,参数如下:

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];

[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

录制3分45秒左右,文件大小3.5M。

看了看,[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];这句话是音频文件的格式,查文档,喔,好多种格式哦,选aac试试吧!

于是改成 [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];

结果录完,还是3.5M。

想了想,编码格式可能是一方面,重点还是在编码率吧。keep googling

之后找到这么一句话:

NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:AVAudioQualityMin],AVEncoderAudioQualityKey,[NSNumber numberWithInt:16], AVEncoderBitRateKey,[NSNumber numberWithInt: 2],AVNumberOfChannelsKey,[NSNumber numberWithFloat:44100.0],
AVSampleRateKey,nil];

喔?好像很多料哦!于是在代码里加入这里面的一些参数,变成这样:

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];

[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];

[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitRateKey];

索性再把AVEncoderBitRateKey16改成8! 哦,还是3.5M,呵呵,听听音质怎么样,恩,这么感觉刺刺拉拉的,有点很不爽,是不是类似与视频那种,低于24fps就会觉得跳帧?keep googling。

然后发现不是这个概念,不过可以这么理解一下:

比特率值与现实音频对照

  16Kbps=电话音质

  24Kbps=增加电话音质、短波广播、长波广播、欧洲制式中波广播

  40Kbps=美国制式中波广播

  56Kbps=话音

  64Kbps=增加话音(手机铃声最佳比特率设定值、手机单声道MP3播放器最佳设定值)

  112Kbps=FM调频立体声广播

  128Kbps=磁带(手机立体声MP3播放器最佳设定值、低档MP3播放器最佳设定值)

  160Kbps=HIFI高保真(中高档MP3播放器最佳设定值)

  192Kbps=CD(高档MP3播放器最佳设定值)

  256Kbps=Studio音乐工作室(音乐发烧友适用)

然后我把那个8改回16,结果文件大小没变化,音质也没有改善,估计是那个qualityMin弄的吧?管他呢,我开始有点烦了。

然后经历了一番折腾,最终还是把代码改回了最开始的那点儿,果然貌似是因为qualityMin闹的,现在正常了。

然后你们看到这儿可以发现,我其实说了一堆废话,最后回到原点了。

恩,走错路了,如果以后大家做音频,不要走这些错路就好。。。。

ps:关于推送导证书那点事儿最近一直没写,我也忘的差不多了。。。哪天用到的时候再顺便写吧⋯⋯
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: