关于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:关于推送导证书那点事儿最近一直没写,我也忘的差不多了。。。哪天用到的时候再顺便写吧⋯⋯
- 关于iOS系统里录音的一些设置的心得
- 关于IOS适配的一些心得
- 关于监控系统的一些想法心得
- 关于监控系统的一些想法心得
- 关于监控系统的一些想法心得
- ios --- 调用系统"设置"里的功能 .
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- ios --- 调用系统"设置"里的功能
- 关于即时通讯中Android录音与ios录音的兼容问题
- iOS:关于UITabBar的一些设置
- 关于iOS Tabbar的一些设置
- 关于iOS Tabbar的一些设置
- 关于iOS Tabbar的一些设置
- 分页公用方法 有oracle,mysql
- 关于iOS通过扬声器播放声音的问题。
- php实现工厂模式
- Siverlight 调试DLL发现的,当前不会命中断点。还没有为该文档加载任何符号(收集)
- 鲍尔默回应股东呼声:分拆微软无任何意义
- 关于iOS系统里录音的一些设置的心得
- 诺基亚CEO埃洛普:帮微软WP反击Android最重要
- 如何防止iOS程序在运行中进入待机模式
- UIImage 图片处理:截图,缩放,设定大小,存储
- 谷歌程序员年薪高达25万美元以上
- Java 中this和super的用法
- 弹出透明层,覆盖整个浏览器,页面元素的相对可视范围的不动
- awk/sed与shell变量的传递
- 西方同行眼中的东方程序员