iOS 10 音频相关框架及工具总结

iOS 9以来,相关音频编程的框架越来越趋于完善,较之前版本有很大变化,至iOS 10,大量主要Framework已经全部用swift语言实现,性能优越,编程效率大大提高,现整理总结相关内容如下:

主要音频相关API框架

iOS 10 音频相关框架及工具总结_第1张图片
iOS音频相关API框架.png

底层CoreAudio因为大量C风格代码,基础保持不变的前提下,之上AudioToolBox部分功能移动至AVFoundation,并用swift重新封装成OOP风格,特别强化完善了AVAudioEngine的高效性能,使得复杂的音频操作不再完全依赖C代码。

AVAudioSession

AVAudioSession完全取代旧版AudioSession,使得App可以创造出更好的用户体验。

iOS 10 音频相关框架及工具总结_第2张图片
AVAudioSession Configuration.png
iOS 10 音频相关框架及工具总结_第3张图片
AVAudioSession Interact.png

AVAudioSession 编程要点

  1. 注册系统notifications
  • AVAudioSessionInterruptionNotification
  • AVAudioSessionRouteChangeNotification
  • AVAudioSessionMediaServicesWereResetNotification
  1. 为不同的应用需求设置category, mode, and options
  2. 设置并激活Session状态
  3. 响应并处理notifications
  • Interruptions 中断
  • Route changes 路由改变
  • Media services were reset

AVAduioPlayer 简单播放音频文件(低延时)

  • 支持 wav, caf, m4a, aac, mp3, aif 格式的解码
  • 允许控制音量、进度、音相、循环和速率,
  • 多个AVAudioPlayer对象可以同步播放

AVAudioRecorder 简单录音

  • 支持录音和定时录音
  • 监控录音峰值表
  • 支持AAC, HE-AAC, HE-AACv2, ALAC, LPCM格式编码

AVPlayer 播放器

支持播放控制的UI类,包含AVPlayerView / AVPlayerViewController
可以同时播放音频和视频

AVAudioEngine 高级的音频播放和录制

AVAudioEngine是一套由Objective-C/Swift重新封装的功能丰富,性能强大的API,可以用简洁的方式处理实时音频(延时在5-20ms以内),管理AudioUnit,配置AUGraph节点,用流程化的方式配置、组合音频路由,还支持3D空间定位。

iOS 10 音频相关框架及工具总结_第4张图片
AVAudioEngine应用场景一.png
iOS 10 音频相关框架及工具总结_第5张图片
AVAudioEngine应用场景二.png
  • 播放或录制文件(files),缓冲区(buffers)内容
  • 音频处理:效果器effects, 混音mixing
  • 3D环境音效
iOS 10 音频相关框架及工具总结_第6张图片
AVAudioEngine 3D 配置.png

相关工具类

  • AVAudioFormat(格式)
  • AVAudioBuffer(缓冲区)
  • AVAudioFile(文件)
  • AVAudioConverter(格式转换)
iOS 10 音频相关框架及工具总结_第7张图片
工具类间关系.png
iOS 10 音频相关框架及工具总结_第8张图片
工具类和AVAudioEngine的关系.png

CoreMIDI

MIDI相关的内容在iOS9以后也得到了充分的完善,不仅可以支持外部MIDI设备,还加入了AVAudioSequencer音序器,控制MIDI数据更加简洁了。

iOS 10 音频相关框架及工具总结_第9张图片
MIDI相关API.png

更多详细内容请参考WWDC 2016 507 - Delivering an Exceptional Audio Experience

你可能感兴趣的:(iOS 10 音频相关框架及工具总结)