`

IOS媒体层

 
阅读更多

转自:http://wd397.blog.163.com/blog/static/60860635201281683054319/

 

媒体层包含图形技术、音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易。您可以使用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框架,您可以在应用程序中生成、录制、混合或播放音频,您也可通过该框架访问设备的震动功能(支持震动功能的设备)。

表 3-1  Core Audio框架

框架

服务


CoreAudio.framework

定义Core Audio框架家族使用的音频数据类型。


AudioToolbox.framework

播放或录制音频文件或数据流,也可用于管理音频文件、播放系统警告声音、触发某些设备的震动功能。


AudioUnit.framework

为内置音频单元服务,内置音频单元是指音频处理模块。

 

如需进一步了解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参考集

 

 

分享到:
评论

相关推荐

    iOS技术概述

    媒体层包含的框架 21 资产库框架 21 AV Foundation 框架 21 Core Audio 22 Core Graphics 框架 23 Core Text 框架 23 Core Video 框架 23 Image I/O 框架 23 媒体播放器框架 24 OpenAL 框架 24 OpenGL ES 框架 24 ...

    ios开发规范 详细叙述ios开发的风格、规范~~

    iOS的系统架构分为四个层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touch layer)。系统操作占用大概240MB的存储器空间。

    企业级iOS应用开发实战(全部章节)

    企业级ios应用开发实战分为三部分:基础篇(1~6章),首先介绍了传统企业级应用与iOS企业级应用的区别、iOS企业级应用程序的架构以及发布方法,然后详细讲解了iOS的开发框架、Objective-C语法的核心要素、Xcode集成...

    ios技术概述(中文版)

    详细讲解了ios的技术,架构描述,cocoa touch层,媒体层,cocoa service层,cocoa os层。

    sdl:适用于 iOS、Android、Windows (WinRT)、Windows Phone 和 Windows 桌面的 SDL(简单直接媒体层)

    适用于 iOS、Android、Windows (WinRT)、Windows Phone 和 Windows 桌面的 SDL(简单直接媒体层) 要求: ANGLE(几乎本机图形层引擎)(仅限 Windows (WinRT)、Windows Phone 和 Windows 桌面) C:\git>git ...

    《iOS6开发指南》精彩书摘

    本书是智捷iOS课堂团队编写iOS系列丛书中的一本,目的是使一个有Objective-C基础的程序员通过本书的学习,能够从零基础到在App Store发布一款应用。全书分为4篇:  第一部分基础篇,介绍了iOS一些基础的知识。 第1...

    企业级iOS应用开发实战(高清版)

    企业级ios应用开发实战分为三部分:基础篇(1~6章),首先介绍了传统企业级应用与iOS企业级应用的区别、iOS企业级应用程序的架构以及发布方法,然后详细讲解了iOS的开发框架、Objective-C语法的核心要素、Xcode集成...

    Connect-SDK-iOS-FireTV:适用于Connect SDK的Amazon FireTV iOS模块

    它提供以下功能: 媒体播放媒体控制使用Connect SDK来发现/控制Fire TV设备将使您的应用符合。一般信息有关Connect SDK的更多信息,请访问。设置连接SDK集成从下载Amazon Fling SDK。 将ios-sdk/frameworks/...

    VEVideoEditor:适用于 iOS 的视频编辑器

    基于 AV Foundation Framework 的 iOS 视频编辑器。 特征 将图像层添加到视频 合并多个视频 将音频更改为视频 安装。 将“VideoEditor/model”中的所有文件添加到您的项目中。 将上述框架添加到您的项目中。 ...

    【计算机软件毕业设计】基于ios平台的天气app应用设计与实现文献综述.doc

    应用层包括休闲娱乐类、工具媒体类 、商务财经类等不同应用与服务。随着技术和产业的发展,未来,LTE(长期演进,4G通 信技术标准之一)和NFC(近场通信,移动支付的支撑技术)等网络传输层关键技术也将被 纳入移动...

    媒体水印:基于GPUCPU的iOS水印库,用于图像和视频叠加

    关于MediaWatemark是一个基于GPU / CPU的开源iOS水印库,用于将叠加层添加到图像或视频内容。 它具有简单的界面和直接的功能。总览简单通用MediaWatemark易于安装并集成到任何iOS项目中。 它处理各种各样的任务,...

    IOS开发网络篇—Socket编程详解

    其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象; 传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。 http协议对应于应用层 tcp协议对应于传输层 ip协议对应...

    信息技术架构图.pptx

    Firewalls Portal Android IOS Windows Mac OSX 服务层 应用层 网络层 YY实物红包 Master Slave Master Slave Master Slave H5 Application 持久层 Statics portal 会议室预定 调查 勋章墙 福树2016 HA Proxy Value ...

    OCR:基于OpenCV和TesseractOCRiOS的银行卡号识别.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    IOS_Adventures:一场史诗般的冒险,您将以自己的方式拯救公主!

    他们的魔力被用来将所有IOS路由器转变为简单的集线器和媒体转换器,从而形成无休止的第2层环路,从而加剧了王国的衰败。 只有IOS国王的女儿Cattools公主才能解开咒语,并使路由器恢复光荣,但朱诺斯国王本人仍将她...

    iPhone应用程序开发指南.中文.pdf

    关于层 102 关于动画 102 文本和Web 103 关于文本和Web的支持 103 文本视图 103 Web视图 104 键盘和输入法 106 管理键盘 107 接收键盘通告 107 显示键盘 109 取消键盘 109 移动键盘下面的内容 109 描画文本 113 在...

    通用播放器控件

    基于最新版FFmpeg解码器及流媒体解析器,UI层封装成独立控件,提供简洁易用API接口及丰富播放事件捕捉, 能够流畅播放720P至1080P高清MKV,FLV,MP4,TS,H264等常见格式的视频,可以在Windows,Android与IOS上跨平台...

    FlutterRadioPlayer:Flutter Radio Player,一个可轻松处理流音频的插件

    该插件还与两种核心媒体功能(如Android上的MediaSession和iOS上的RemoteControl功能(控制中心))深度集成。 该插件还支持通过wearOS和WatchOS控制播放器。 特征 同时支持android和ios 支持背景音乐播放 与...

    sipml5世界上第一个HTML5 SIP客户端

    SipML5使用Chrome的实验功能WebRTC实现媒体功能,并用JavaScript封装了一个完整强大的javascript SIP/SDP stack 完成信令的管理,传输层通过Websocket与服务端Gateway通信接入SIP Server,最终通过Video TAG播放视...

Global site tag (gtag.js) - Google Analytics