iOS 音视频开发(一)常用音视频框架介绍
文章规划
iOS 音视频开发(一)常用音视频框架介绍(本篇)
iOS 音视频开发(二)AVAudioRecorder实现录音功能
iOS 音视频开发(三)MediaPlayer播放本地、远程音频
iOS 音视频开发(四)MediaPlayer播放本地、远程视频
iOS 开发中常用的音视频框架有五个:
- MediaPlayer
- AudioToolbox
- AVFoundation
- AudioUnit
- VideoToolbox
下面简单介绍一下各个框架:
MediaPlayer 框架
MediaPlayer 框架是 iOS 平台上一个用于音频和视频播放的高层级接口,它包含了用户界面。你可以使用它来播放用户在 iPod 库中的项目,或者播放本地文件以及网络文件。
另外,这个框架也包括了查找用户媒体库中内容的 API,同时还可以配置像是在锁屏界面或者控制中心里的音频控件。
AudioToolbox框架
AudioToolbox 这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封装一个在线播放器类。
AVFoundation框架
是苹果的现代媒体框架,它包含了一些不同的用途的 API 。其中有一些是现代 Objective-C 对于底层 C 语言接口的封装。除了少数的例外情况,AVFoundation 可以同时在 iOS 和 OS X 中使用。
AudioUnit 框架
Audio Unit 框架是一个底层的 API。所有 iOS 中的音频技术都构建在 Audio Unit 这个框架之上。音频单元是用来加工音频数据的插件。一个音频单元链叫做音频处理图。
如果你需要非常低的延迟 (如 VoIP 或合成乐器)、回声消除、混音或者音调均衡的话,你可能需要直接使用音频单元,或者自己写一个音频单元。但是其中的大部分工作可以使用 AVFoundation 的 AVAudioEngine 的 API 来完成。如果你不得不写自己的音频单元的话,你可以将它们与 AVAudioUnit 节点一起集成在 AVAudioEngine 处理图中。
跨应用程序音频:Audio Unit 的 API 可以在 iOS 中进行跨应用音频。音频流 (和 MIDI 命令) 可以在应用程序之间发送。比如说:一个应用程序可以提供音频的效果器或者滤波器。另一个应用程序可以将它的音频发送到第一个应用程序中,并使用其中的音频效果器处理音频。被过滤的音频又会被实时地发送回原来的应用程序中。 CoreAudioKit 提供了一个简单的跨应用程序的音频界面。
VideoToolbox 框架
常用于流媒体直播,推流时对视频进行H264编解、解码。