我们按照这个图,从上到下一点点看看整个IOS的音频结构。
MediaPlayer太简单了,这里就不介绍了。先从AVFoundation看起:
这个框架下的类太多了,我们调几个比较重要的说说:
(1) AVAsset:读写音视频文件,建立一系列的读写方法,获取音频视频数据。非常重要。
(2) AVAudioPlayer:音频播放,定制音频播放界面,对音频播放、暂停、快进、快退、循环等各种功能进行逻辑控制。
(3) AVAudioRecorder:和(2)类似,这里是录音控制类。
(4) AVAudioSession/AVCaptureSession AVCaptureSession这里即可以处理视频也可以处理音频,所以我们来是了解下这个如何使用。
(5) AVPlayer:音视频播放
这里只列出了5个经常使用的AVFoundation的类,但是5个每一个都十分复杂,所以由于篇幅关系,这里只介绍这些。
音频播放与录制:AVAudioPlayer AAudioRecorder:
看看AVAudioPlayer播放方法:
这是当时做的一个测试demo的效果:
具体的代码和分析可以参考另一篇博客:
IOS音频2:之采用四种方式播放音频文件(二)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
IOS音频3:之采用四种方式播放音频文件(三)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
这里就不重复了。看看AAudioRecorder 怎么使用:
音频录制和使用饿过程类似,下面就纪录下录制的步骤。
(1)利用录音的文件路径实例化AVAudioRecorder
AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:url settings:nil error:&error];
这里URL是你录音完所要存放的位置。
(2)设置代理方法,准备录音
recorder.delegate = self;
[recorder prepareToRecord];
(3)录音、停止、暂停等功能
[recorder record];
[recorder stop];
(4)可以在回调方法中处理一些业务逻辑
比如在音频录制完成之后:
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recordersuccessfully:(BOOL)flag;
- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recordererror:(NSError *)error;