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

iOS录音功能

2016-05-19 15:55 405 查看
【音频】

指人耳可以听到的声音频率在20HZ~20kHz之间的声波,称为音频。

【采样频率】

即取样频率, 指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。

22050 的采样频率是常用的, 44100已是CD音质, 超过48000或96000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。

如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.

【采样位数】

即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。

每个采样数据记录的是振幅, 采样精度取决于采样位数的大小:

    •    1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;

    •    2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;

    •    4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.

【通道数】

即声音的通道的数目。常有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果,当然还有更多的通道数。

【帧】

帧记录了一个声音单元,其长度为样本长度(采样位数)和通道数的乘积。

【周期】

音频设备一次处理所需要的帧数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。

【交错模式】

数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录...

【非交错模式】

首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本。

【比特率】

每秒的传输速率(位速, 也叫比特率)。如705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒的意思,表示每秒705600bit的容量。

选择一个Category

AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound

——用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关闭而静音。并且不会中止其它应用播放声音,可以和其它自带应用如iPod,safari等同时播放声音。注意:该Category无法在后台播放声音

AVAudioSessionCategorySoloAmbient 或 kAudioSessionCategory_SoloAmbientSound

——类似于AVAudioSessionCategoryAmbient 不同之处在于它会中止其它应用播放声音。 这个category为默认category。该Category无法在后台播放声音

AVAudioSessionCategoryPlayback 或 kAudioSessionCategory_MediaPlayback

——用于以语音为主的应用,使用这个category的应用不会随着静音键和屏幕关闭而静音。可在后台播放声音

AVAudioSessionCategoryRecord 或 kAudioSessionCategory_RecordAudio

———用于需要录音的应用,设置该category后,除了来电铃声,闹钟或日历提醒之外的其它系统声音都不会被播放。该Category只提供单纯录音功能。

AVAudioSessionCategoryPlayAndRecord 或 kAudioSessionCategory_PlayAndRecord

——用于既需要播放声音又需要录音的应用,语音聊天应用(如微信)应该使用这个category。该Category提供录音和播放功能。如果你的应用需要用到iPhone上的听筒,该category是你唯一的选择,在该Category下声音的默认出口为听筒(在没有外接设备的情况下)。

注意:并不是一个应用只能使用一个category,程序应该根据实际需要来切换设置不同的category,举个例子,录音的时候,需要设置为AVAudioSessionCategoryRecord,当录音结束时,应根据程序需要更改category为AVAudioSessionCategoryAmbient,AVAudioSessionCategorySoloAmbient或AVAudioSessionCategoryPlayback中的一种。

录音相关设置

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

//1.设置录音格式:AVFormatIDKey

[dict setObject:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];

//2.设置录音采样速率:AVSampleRateKey 8000/44100/96000

[dict setObject:[NSNumber numberWithInt:44100] forKey:AVSampleRateKey];

//3.设置录音质量:AVEncoderAudioQualityKey

[dict setObject:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];

//4.设置线性采样位数:AVLinearPCMBitDepthKey 8/16/24

[dict setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];

//5.录音通道:AVNumberOfChannelsKey 1/2

[dict setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: