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

来源:互联网 发布:淘宝如何提交订单 编辑:程序博客网 时间:2024/05/17 04:49

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

解决原理:大家都知道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:关于推送导证书那点事儿最近一直没写,我也忘的差不多了。。。哪天用到的时候再顺便写吧⋯⋯

原创粉丝点击