一、音效播放 System Sound Service
播放限制:
- 音频时间不能超过30秒 如果需要播放时长较长的音频无法满足
- 音频文件格式有限制(caf、ait、wav、mp3)
- 音效播放使用的是System Sound Service,只需要向系统注册,系统会播放此音效。需要对音频有精确的控制则System Sound Service就无法满足了
导入框架
AudioToolbox.framework
代码
-
注册音效 获取音效id
- AudioServicesCreateSystemSoundID()
-
播放音效
- AudioServicesPlaySystemSound
- AudioServicesPlayAlertSound(带震动)
-
如果需要监听播放完成操作
AudioServicesAddSystemSoundCompletion
二、播放本地音乐 AVAudioPlayer
播放限制
- 只能播放本地文件,也就是沙盒中或者工程中的音频文件
- 加载的URL也只能是File URL而不是HTTP URL
导入框架
AVFoundation.framework
代码
- 创建
- 根据文件URL创建AVAudioPlayer
- 设置循环次数为0
- 设置代理
- 加载文件至缓存
- 开始播放
- 1
- 暂停
- 播放进度,不支持 定时器控制
三、录音
导入框架
AVFoundation.framework
代码
- 创建AVAudioRecorder对象
- 构建录音文件完成后保存路径
- 构建录音设置
- 根据路径和设置构建AVAudioRecorder对象
- 设置代理
- 实现录音完成的协议方法
- 设置监控声波
- 开始录音
- 开始录音
- 开启定时器 监控声波
- 读取当前声波测量值
- 使用录音器对象从某个声道中取音频强度,范围: -160~0
- 暂停录音
- 暂停 pause
- 恢复录音
- 开始录音record 音频会话会自动帮助我们记录上次录音位置并追加录音
- 停止录音
- 停止stop
四、音频服务队列(本地和网络)
系统框架:
AudioToolBox.framework
概况
由于框架内部处理流程复杂,提供的接口API都是C函数,不友好,所以推荐使用优秀的第三方库。
如果想要深究其原理,可以参考第三方库:AudioStreamer、FreeStreamer 因为前者代码版本较早不支持ARC,所以建议后者