iOS多媒体框架介绍
媒体层
媒体层包含图形技术、音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易。您可以使用iOS的高级框架更快速地创建高级的图形和动画,也可以通过底层框架访问必要的工具,从而以某种特定的方式完成某种任务。
图形技术
高质量的图形是iOS应用程序的重要组成部分。创建应用程序最简单最有效的方法是使用事先渲染过的图片,搭配上标准视图以及UIKit框架的控件,然后把绘制任务交给系统来执行。但是在某些情况下,您可能需要一些UIKit所不具有的功能,而且需要定制某些行为。在这种情况下,您可以使用下述技术管理应用程序的图形内容:
-
Core Graphics (也被称为Quartz),用于处理本地2D向量渲染和图片渲染。
-
Core Animation ( Quartz Core框架的一部分),为动画视图和其他内容提供更高级别支持。
-
OpenGL ES,为使用硬件加速接口的2D和3D渲染提供支持。
-
Core Text,提供一个精密的文本布局和渲染引擎。
-
Image I/O,提供读取及编写大多数图形格式的接口。
-
资产库框架(Assets Library framework),可用于访问用户照片库中的照片和视频。
大多数应用程序应该无需改动,或者只需做很少修改,便可运行在具备高分辨率屏幕的设备。因为在绘图或者操作视图的时候,您所指定的座标值会被映射到逻辑座标系统,它和底层屏幕分辨率没有关联。而且绘制的内容会自动根据需要按比例缩放,以此来支持高分辨率屏幕。对基于向量进行绘制的代码来说,系统框架会自动使用额外的像素来改善图画的内容,使其变得更清晰。如果应用程序中使用了图片,则可以利用UIKit自动加载现有图片的高分辨率版本。如您需进一步了解如何支持高分辨率屏幕,请查看iOS应用程序编程指南中的“支持高分辨率屏幕”。
如需进一步了解图像相关框架,请查看”媒体层框架“中相应的内容。
音频技术
iOS音频技术可帮助您为用户提供丰富多彩的音响体验。您可以使用音频技术来播放或录制高质量的音频,也可以用于触发发设备的震动功能(具有震动功能的设备)。
iOS系统提供数种播放或录制音频的方式供您选用。在选择音频技术的时候,请记住,要尽可能地选取高级框架,因为它们可以简化播放音频所需的工作。下面列出的框架从高级到低级排列,,媒体播放器框架(Media Player framwork)提供的是最高级的接口:
-
媒体播放器框架。该框架可以让访问用户的iTume库变得很容易,并且支持播放曲目和播放列表。
-
AV Foundation框架。它提供一组简单易用的Objective-C接口,可用于管理音频的播放或录制。.
-
OpenAL框架。它提供一组跨平台,用于发布方位音频的接口。
-
Core Audio框架。它提供的接口简单而精密,可用于播放或录制音频内容。您可以使用这些接口播放系统的警报声音、触发备的震动功能、管理多声道的缓冲和播放、对音频内容进行流化处理。
iOS音频技术支持下述音频格式:
-
AAC
-
Apple Lossless (ALAC)
-
A-law
-
IMA/ADPCM (IMA4)
-
Linear PCM
-
μ-law
-
DVI/Intel IMA ADPCM
-
Microsoft GSM 6.10
-
AES3-2003
如需进一步了解上述音频框架,请查看”媒体层框架“中相应的内容。
视频技术
iOS有数种技术可用于播放应用程序包的电影文件以及来自网络的数据流内容。如果设备具有合适的视频硬件,这些技术也可用于捕捉视频,并可将捕获到的视频集成到应用程序。
系统提供也提供多种方法用于播放或录制视频内容,您可以根据需要选择。选择视频技术的时候,请尽可能选择高级框架,因为高级框架可以简化为提供对某种功能的支持所需的工作。下面列出的框架由高级到低级排列。其中,媒体播放器框架提供最高级的接口:
-
媒体播放器框架,它提供一组易于使用的接口,可用于播放应用程序中全屏或部分屏的电影。
-
AV Foundation框架,它提供一组Objective-C接口,可以对电影的捕捉和播放进行管理。
-
Core Media框架,它对较高级框架使用的底层类型进行描述,同时也提供一些底层接口,它们用于对媒体进行处理。
iOS视频技术支持播放的电影文件应具有.mov
、.mp4
、.m4v
以及.3gp
文件扩展名,而且文件应使用下述的压缩标准:
-
H.264视频,多达1.5 Mbps, 640x480像素,每秒30帧。 H.264 Baseline Profile 的 Low-Complexity 版本支持 AAC-LC 音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
H.264视频,高达68 Kbps,320x240像素,每秒30帧。达到Level 1.3的 Baseline Profile支持AAC-LC音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
MPEG-4视频,高达 2.5 Mbps, 640 x 480像素,每秒30帧。Simple Profile支持AAC-LC 音频(
.m4v
、.mp4
以及.mov
文件格式中高达160Kbps ,48KHz 的立体音频)。 -
各种音频格式,包括 “音频技术”列出的清单。
如需进一步了解上述视频框架,请查看”媒体层框架“中相应的内容。
媒体层包含的框架
后续部分对媒体层的框架和框架所提供的服务进行说明。
资产库框架
iOS
4.0引入了资产库框架(AssetsLibrary.framework
),该框架提供一个查询界面,您可以通过它查找用户照片和数据。通过使用该框架,您可以访问Photos管理的资产,包括用户保存的相册以及导入到设备中的图片或视频。而且您也可以将照片或者视频保存到用户的相册。
如需进一步了解该框架,请查看资产库框架参考。
AV Foundation 框架
iOS 2.2引入了AV Foundation 框架
(AVFoundation.framework
),该框架包含的Objective-C
类可用于播放音频内容。通过使用该框架,您可以播放声音文件或播放内存中的音频数据,也可以同时播放多个声音,并对各个声音的播放特定进行控制。
在 iOS 4.0及后续版本中,该框架提供的服务得到很大的扩展,下述的服务现在也包含在框架中:
-
媒体资产管理
-
媒体编辑
-
电影捕捉
-
电影播放
-
曲目管理
-
媒体项的元数据管理
-
立体声淘选
-
不同声音的精确同步
-
用于判断声音文件详细信息的Objective-C接口,例如判断数据格式、采样率和声道数。
AV Foundation框架是iOS中录制播放音频和视频的唯一框架,该框架还支持对媒体项进行管理和处理。
如需进一步了解AV Foundation框架,请查看AV Foundation 框架参考。
Core Audio
表3-1列出来的Core Audio框架家族为音频提供本地支持。Core Audio框架提供C语言接口,可用于操作立体声音频。通过iOS系统Core Audio框架,您可以在应用程序中生成、录制、混合或播放音频,您也可通过该框架访问设备的震动功能(支持震动功能的设备)。
框架 |
服务 |
---|---|
|
定义Core Audio框架家族使用的音频数据类型。 |
|
播放或录制音频文件或数据流,也可用于管理音频文件、播放系统警告声音、触发某些设备的震动功能。 |
|
为内置音频单元服务,内置音频单元是指音频处理模块。 |
如需进一步了解Core Audio,请参考Core Audio 概述。如需了解如何使用Audio Toolbox 框架播放声音,请查看音频队列服务编程指南r以及Audio Toolbox框架参考。
Core Graphics 框架
Core
Graphics框架 (CoreGraphics.framework
)包含Quartz
2D绘图API接口 。Quartz 是Mac OS
X系统使用的向量绘图引擎,它支持基于路径绘图、抗锯齿渲染、渐变、图片、颜色、坐标空间转换、PDF文件的创建、显示和解析。虽然API基于C语言,但是它使用基于对象的抽象以表示基本绘图对象,这样可以让开发者可以更方便地保存并复用图像内容。
如需进一步了解如何使用Quartz绘制内容,请查看 Quartz 2D 编程指南 以及Core Graphics框架参考 。
Core Text 框架
iOS 3.2引入了Core
Text框架(CoreText.framework
),该框架包含一组简单高效的C接口,可用于对文本进行布局以及对字体进行处理。Core
Text框架提供一个完整的文本布局引擎,您可以通过它管理文本在屏幕上的摆放。所管理的文本也可以使用不同的字体和渲染属性。
该框架专为诸如字处理程序这类需要具有精密文本处理功能的应用程序而设计。如果您的应用程序只需要一种文本输入和显示,则应使用UIKit框架中已有的类。
如需进一步了解 Core Text接口的使用方式,请参考Core Text 编程指南和Core Text 参考集。
Core Video 框架
iOS 4.0引入了 Core Video框架 (CoreVideo.framework
) ,该框架为Core
Media提供缓存和缓存池的支持。大多数应用程序都不应该直接使用该框架。
Image I/O 框架
iOS 4.0引入 Image I/O 框架
(ImageIO.framework
),该框架的接口可用于导入或导出图像数据及图像元数据。该框架建构于 Core
Graphics数据类型和函数之上,能够支持iOS 上所有的标准图像类型。
如需进一步了解该框架的数据类型和函数,请查看mage I/O 参考集。
媒体播放器框架
媒体播放器框架 (MediaPlayer.framework
)为应用程序播放视频和音频内容提供高级支持。通过该框架,您就可以使用标准系统界面播放视频。
iOS 3.0增加了对访问用户iTune库的支持。因此,您可以利用该框架播放音乐曲目、播放列表、搜索歌曲并向用户显示媒体选取界面。
在 iOS 3.2系统中,该框架发生了变化,开始支持在可改变尺寸的视图中播放视频(之前只支持全屏)。另外还新增数个界面用于支持配置和管理电影播放。
如需进一步了解媒体播放器框架中的类,请查看媒体播放器框架参考 。如需了解如何使用该框架访问用户的 iTunes库,请查看iPod 库访问编程指南。
OpenAL 框架
除了Core Audio之外,, iOS 还支持 Open Audio Library (OpenAL)。OpenAL接口是在应用程序中发布方位音频的跨平台标准。通过使用该框架,您可以在游戏或者要求有方位音频输出的程序中实现高性能、高质量的音频。OpenAL是跨平台的标准,iOS平台使用OpenAL编写的代码模块可以移植到许多其他的平台运行。
如需了解OpenAL及其使用方式,请查看http://www.openal.org。
OpenGL ES 框架
OpenGL
ES框架 (OpenGLES.framework
)提供的工具可用于绘制2D及3D内容。该框架基于C语言,能够和设备硬件紧密协作,为全屏游戏类型的应用程序提供很高的帧速率。
OpenGL框架需要和EAGL接口结合使用。这些接口是 OpenGL ES 框架的一部分,它们是OpenGL ES绘图代码及应用程序中的窗口对象的接口。
在 iOS 3.0及其后续版本的系统中,OpenGL ES 框架同时支持 OpenGL ES 2.0 及OpenGL ES 1.1 接口规范。2.0规范支持分段和点着色,只有运行iOS 3.0及其后续版本的设备才支持2.0。所有版本的iOS及iOS设备都支持OpenGL ES 1.1规范。
如需了解如何在应用程序中使用OpenGL ES,请查看iOS OpenGL ES编程指南。如果需要参考信息,请查看OpenGL ES框架参考。
Quartz Core 框架
Quartz
Core框架 (QuartzCore.framework
)包含Core
Animation接口。Core
Animation是高级动画制作和混合技术,它使用经过优化的渲染路径实现复杂的动画和视觉效果。它提供的高级Objective-C接口可对动画效果进行配置,然后在设备硬件中进行渲染,以此来提高程序的性能。Core
Animation框架被整合到iOS的许多部分(包括UIKit框架中的许多类(如UIView
)),可以为多种系统行为提供动画效果。您也可以使用该框架中的Objective-C接口直接创建定制动画。
如需进一步了解如何在应用程序中使用Core Animation,请查看Core Animation Programming Guide and Core Animation参考集。