无论多媒体功能在您的应用程序中是处于中心地位,还是偶尔被使用,iPhone用户都期望有很高的品质。视频应该充分利用设备携带的高分辨率屏幕和高帧率,而引人注目的音频也会对应用程序的总体用户体验有不可估量的增强作用。
您可以利用iPhone OS的多媒体框架来为应用程序加入下面这些功能:
高品质的音频录制和回放
生动的游戏声音
实时的声音聊天
用户iPod音乐库内容的回放
在支持的设备上进行视频的回放和录制
本章将介绍iPhone OS上为应用程序添加音视频功能的多媒体技术。
在iPhone OS上使用声音
iPhone OS为应用程序提供一组丰富的声音处理工具。根据功能的不同,这些工具被安排到如下的框架中:
如果希望用简单的Objective-C接口进行音频的播放和录制,可以使用AV Foundation框架。
如果要播放和录制带有同步能力的音频、解析音频流、或者进行音频格式转换,可以使用Audio Toolbox框架。
如果要连接和使用音频处理插件,可以使用Audio Unit框架。
如果希望在游戏和其它应用程序中回放位置音频,需要使用OpenAL框架。iPhone OS对OpenAL 1.1的支持是建立在Core Audio基础上的。
如果希望播放iPod库中的歌曲、音频书、或音频播客,需要使用Media Player框架中的iPod媒体库访问接口。
Core Audio框架(和其它音频框架对等)中提供所有Core Audio服务需要使用的数据类型。
本部分将就如何着手实现各种音频功能提供一些指导,如下表所示:
播放用户iPod库中的歌曲、音频播客、以及音频书,请参见“用iPod媒体库访问接口播放媒体项”部分。
播放警告及用户界面声音效果,或者使具有震动功能的设备发生震动,可以使用系统声音服务,具体请参见“使用系统声音服务播放短声音及激活震动”部分。
如果要用最少量的代码播放和录制音频,可以使用AV Foundation框架,具体参见“通过AVAudioPlayer类轻松播放声音”及 “用AVAudioRecorder类进行音频录制”部分。
如果需要提供全功能的音频回放,包括立体声定位、音量控制、和同期声(simultaneous sounds),可以使用OpenAL,具体参见“使用OpenAL播放和定位声音”部分。
如果要提供最低延迟的音频,特别是需要同时进行音频输入输出(比如VoIP应用程序)时,请使用I/O音频单元,具体请参见“iPhone OS中的音频单元支持”部分。
如果您播放的声音需要精确的控制(包括同步),可以使用音频队列服务,具体参见“用音频队列服务播放和控制声音”部分,音频队列服务还支持音频录制,具体请见“用音频队列服务进行音频录制”部分的描述。
如果需要解析来自网络连接的音频流,请使用音频文件流服务,具体参见“解析音频流”部分。
请务必阅读本文接下来的部分,即“基础:硬件编解码器、音频格式、和音频会话”部分,以了解在基于iPhone OS的设备上音频工作机制的关键信息;而且也请您阅读“iPhone音频的最佳实践”部分,该部分提供了一些指导原则,并列举了一些能得到最好性能和最佳用户体验的音频和文件格式。
当您准备好进一步学习时,请访问iPhone Dev Center。这个开发者中心包含各种指南文档、实例代码、及更多其它信息。有关如何执行常见音频任务的贴士,请参见音频&视频编程的How-To's部分;如果需要iPhone OS音频开发的深入解释,则请参见Core Audio概述、音频队列服务编程指南、和音频会话编程指南。
基础:硬件编解码器、音频格式、和音频会话
在开始iPhone音频开发之前,了解iPhone OS设备的一些硬软件架构知识是很有帮助的。