微信号:swiftTips

介绍:为保证文章质量,现两日一更,欢迎关注! 收集与分享swift文章swift语言技术 swift开发 swift编程 YouTube搬运工 视频地址:http://space.bilibili.com/5551264

IOS框架和服务介绍(二)MediaLayer(媒体层)

2015-08-06 09:24 GooHong

二、MediaLayer(媒体层)

媒体层包含在应用中实现多媒体体验的图形、声音、视频技术和框架。使用这层的技术可以使你容易的建立更加好看和好听的应用。

2.1 包含的关键技术

2.1.1 图形技术

高质量的图形是所有应用的重要的组成部分。IOS提供了许多帮助你定制艺术和图形屏幕的技术。IOS图形技术为其提供了广泛的支持,并可以与UIKit视图架构无缝工作。

你能使用标准的视图来快速提交高质量的接口,或者使用本层的图形技术创建你自己的定制视图来提交一个更加丰富的图形体验。

1)、UIKit graphics

UIKit定义的绘制图像和Bézier路径,以及动画视图内容的高级别技术。

UIKit视图提供快速和有效的方式来呈现图像和文本内容。

UIKIT视图也能通过显示和使用UIKitdynamics技术进行动画,并为用户提供反馈,促进用户交互。

2)、CoreGraphics 框架

CoreGraphics也称作Quartz,是对定制的2D向量和图像呈现提供支持的本地绘制引擎。

该框架提供的引擎虽然没有OpenGLES引擎速度快,但该框架能够很好地适合于呈现定制的2d图形和动态图像。

3)、CoreAnimation框架

CoreAnimation也是Quartz核心框架的一部分,是优化应用动画体验的基础技术。

UIKit视图基于 Core Animation提供视图级别的动画支持。

当你想对动画行为有更多控制时也能直接使用CoreAnimation。

4)、Core Image

CoreImage提供非破坏的方式操作视频和静态图像。

5)、OpenGL ES及GLKit

OpenGLES使用硬件加速接口来处理先进的2d 和3d 呈现。OpenGLES通常由游戏开发者或想实现沉浸式图像体验的开发者使用。

OpenGLES框架提供对呈现过程的全部控制,以及提供创建平滑动画所需要的帧速。

GLKit是一组Objective-C类,以便能够使用面向对象接口来提供OpenGL ES的强大能力。

6)、Text Kit和CoreText

Text Kit是UIKit框架的家族,用来来执行最好的排面和文本管理。如果你的应用实现先进的文本操作,Text Kit提供与应用视图的无缝集成。

CoreText是处理先进排面和布局的低级别的c语言框架。

7)、Image I/O

ImageI/O提供读写大多数图像格式的接口。

8)、Assets Library

AssetsLibrary框架让你存取用户的图片、视频和媒体。

你想在应用中集成用户自己的内容时可以使用该框架。

2.1.2 声音技术

声音技术工作于底层硬件之上,为用户提供更加丰富的声音体验。这些体验包括播放和记录高质量的声音、处理MIDI内容以及使用设备内建的声音 等能力,

1). Media Player framework

该框架是一个高级别的框架, 用来为用户提供对iTunes库存取的容易方式,也提供对播放轨迹和播放列表的支持。

当你想快速在应用中集成声音以及不需要控制播放行为时可以使用该框架。

2)、AV Foundation

AVFoundation是管理声音以及视频播放和记录的面向对象接口。

在记录声音和想对声音播放过程有更好的控制时可以使用该框架。

3)、OpenAL

OpenAL是一个提供位置音效的跨平台的工业标准技术和接口。

游戏开发者经常使用该技术来提供高质量的声音。

4)、Core Audio

Core Audio是一组简单和智能的接口来记录和播放声音以及MIDI内容。

在需要对声音有更好控制时使用该框架。

2.1.3 视频技术

视频技术提供管理应用中的静态视频内容或者播放来自Internet的视频流的支持。

对于带有适当的记录硬件的设备,该框架还能够记录视频以及与应用进行集成。

1).UIImagePickerController

UIImagePickerController是一个选择用户媒体文件的UIKit视图控制器。

2)、Media Player

MediaPlayer框架提供一组呈现视频内容的简单易用的接口,该框架支持全屏和小窗口视频播放,也为用户提供可选的播放控制。

3)、AVFoundation

AVFoundation提供先进的视频播放和记录能力。

在需要对视频呈现和记录有更多的控制时使用该框架,例如在实时应用中分层显示实时视频和应用提供的其它内容。

4)、CoreMedia

CoreMedia框架为操作媒体定义低级别的数据类型和接口。

当你需要对视频内容有无比的控制时可以使用该框架。

2.1.4 AirPlay技术

AirPlay让应用串流声音和视频内容到Apple TV或者串流声音内容到第三方扬声器和接收器。

AirPlay内建于许多框架,包括UIKit、Media Player、AVFoundation、Core Audio。因此在大多数情况你不需要为了支持它做任何事。在使用那些框架时,当播放内容时自动获得AirPlay支持。当用户选择使用AirPlay播放内容时系统自动进行路由。


2.2包含的框架

MediaLayer提供如下框架和服务。

2.2.1、Assets Library 框架

AssetsLibrary 框架(AssetsLibrary.framework)提供对用户设备上图片应用管理的图片和视频的存取。

使用该框架来存取用户保存的图片相册或导入到设备的任意相册中的图片,你也能保存新的图片和视频到用户的图片相册。

2.2.2、AV Foundation 框架

AVFoundation 框架 (AVFoundation.framework)提供一组播放、记录和管理声音和视频内容的Objective-C类。

当你想在应用的ui接口无缝集成媒体能力时使用该框架。

你也能使用它来进行更先进的媒体处理,例如同时播放多个声音或者控制播放和记录过程的多个方面。

该框架提供的服务包括:

1)声音会话管理,包括对系统声明你的应用声音能力;
2)对应用媒体资源的管理;
3)对编辑媒体内容的支持;
4)捕捉声音和视频的能力;
5)播放声音和视频的能力;
6)轨迹管理;
7)媒体元数据的管理;
8)立体拍摄;
9)声音之间的精确同步;
10)提供一个确定声音文件细节内容的Objective-C接口,例如数据格式,采样率,通道数;
11) 通过AirPlay串流内容。

2.2.3、Core Audio 框架

Core Audio是一个对声音处理提供本地支持的框架家族。这些框架支持声音的产生、记录、混合和回放。你也能使用这些接口处理MIDI内容以及串流声音和MIDI内容到其它应用。

Core Audio框架包括如下框架:

CoreAudio.framework

定义Core Audio框架使用的所有数据类型。

AudioToolbox.framework

提供声音文件和声音流的播放和记录服务。也提供管理声音文件,播放系统警告声音,在某些设备上触发震动的支持。

AudioUnit.framework

提供使用内建声音单元。也提供使你的应用的声音内容作为对其它应用可视的声音组件的支持。

CoreMIDI.framework

提供与MIDI设备通讯的标准方式,包括硬件键盘和合成器。你使用这个框架来发送和接收MIDI消息以及与通过dock连接器或网络连接到IOS设备的MIDI外设交互。

MediaToolbox.framework

提供对声音tap接口的存取。

2.2.4、Core Graphics 框架

CoreGraphics.framework包含Quartz 2D绘制api。

Quartz是一个原先用在OS X的先进的、向量绘制引擎。Quartz支持路径绘制,抗锯齿呈现,剃度,图像,颜色,坐标空间转换以及pdf 内容创建、显示和分析等功能。

虽然这个api是C-based接口,但它使用了面向对象抽象来表现基本的绘制对象,因此使它容易存储和重用图形内容。

2.2.5、Core Image 框架

CoreImage 框架(CoreImage.framework)提供一组强大的内建过滤器来操作视频和静态图像。

你能在触摸弹起、纠正图片以及面部和特征检测等许多方面使用这些内建的过滤器。这些过滤器的先进特点是它们操作在非破坏方式,即原先的图像不被改变。

这些过滤器针对底层硬件进行了优化,因此它们是快速和有效的。

2.2.6、Core Text 框架

CoreText 框架 (CoreText.framework)提供一个对文本进行布局和字体处理的简单的、高性能的C-based接口。

该框架用在不使用TextKit但仍想获得在字处理应用中发现的先进文本处理能力。

该框架提供了一个智能的文本布局引擎,包括在其它内容周围环绕文本的能力,它也支持使用多种字体和呈现属性的先进的文本风格。

2.2.7、Core Video 框架

CoreVideo 框架 (CoreVideo.framework)为Core Media框架提供缓冲和缓冲池支持。多数应用从不直接使用该框架。

2.2.8、Game Controller 框架

GameController 框架 (GameController.framework)让你在应用中发现和配置针对iPhone/iPod/iPad设备的游戏控制器。

游戏控制器可以是物理连接到iOS设备或者是通过蓝牙无线连接。GameController框架当控制器可获得时通知你的应用让应用可以规定哪个控制器输入与你的应用相关。

2.2.9、GLKit 框架

GLKit框架 (GLKit.framework)包含一组简化创建OpenGLES应用的Objective-C based 单元类。

GLKit支持应用开发的四个关键领域

1)GLKViewGLKViewController类提供一个OpenGLES视图和其呈现循环的标准实现。

OpenGLES视图代表应用管理底层的framebuffer对象。应用只需在视图上绘制。
2) GLKTextureLoader类提供在你的应用中使用图像转换和加载线程,允许应用自动加载纹理图像到应用的上下文。

能够异步或同步加载纹理。当异步加载纹理时,应用应提供一个完成处理块,该处理块在纹理加载进应用上下文时被调用。
3)GLKit框架提供向量、矩阵和3d 旋转以及提供OpenGLES 1.1上的矩阵。

4)GLKBaseEffect,GLKSkyboxEffect,和GLKReflectionMapEffect类实现给通用图形操作提供可配置的图形着色。尤其GLKBaseEffect类实现了OpenGL ES 1.1规范上的光亮和材质模式,简化了移植一个应用从OpenGL ES 1.1到OpenGL ES最后版本的努力。

2.2.10、Image I/O 框架

ImageI/O 框架(ImageIO.framework)提供输入和输出图像数据和图像元数据的接口。

该框架利用CoreGraphics数据类型和功能,并支持在ios 上所有的可获得的标准的图像类型。你能使用这个框架存取Exif和IPTC元数据属性。

2.2.11、Media Accessibility 框架

MediaAccessibility 框架 (MediaAccessibility.framework)管理媒体文件中closed-caption内容的呈现。

该框架与新的设置配合工作可以让用户决定是否允许closed-caption显示。

2.2.12、Media Player 框架

MediaPlayer 框架(MediaPlayer.framework)提供应用中播放声音和视频的高级别支持。能够使用该框架做如下工作:


1) 播放视频到用户屏幕或通过AirPlay到另外的设备屏幕。能够全屏幕播放视频或以可改变视图大小的方式播放。


2)存取用户的iTunes音乐库。能够播放音乐轨迹和播放列表、搜索音乐、给用户提供一个媒体picker呈现接口。


3)配置和管理电影的回放。


4) 在锁定屏幕和app 切换窗口上显示NowPlaying信息。当内容通过AirPlay提交时还能显示到AppleTV上。


5)检测视频通过AirPlay被串流的时间。

2.2.13、OpenAL 框架

OpenAudio Library (OpenAL)接口是用来在应用中提供位置音效的跨平台的标准。

能够使用该接口在游戏和其它需要位置音效输出的程序中实现高性能、高质量的声音。

因为OpenAL是跨平台的标准,在iOS使用OpenAL编写的代码能够容易地移植到许多其它平台。

2.2.14、OpenGL ES 框架

OpenGLES 框架 (OpenGLES.framework)提供绘制2d和3d内容的工具, 它是一个C-based的框架。

该框架以最接近设备硬件的方式为全屏沉浸式应用例如游戏提供细粒度的图形控制和高的帧率。

你能够与EAGL配合使用这个框架,为OpenGL ES 绘制调用和UIKit的本地窗口对象之间提供接口。

该框架支持OpenGLES 1.1, 2.0, 3.0规范。2.0规范增加了片段和顶点着色的支持,3.0规范增加了更多的功能,包括多个呈现目标和变换反馈。

2.2.15、Quartz Core 框架

QuartzCore 框架(QuartzCore.framework)包含Core Animation接口。

Core Animation是一个先进的复合技术,使用它能容易创建快和有效的view-based的动画。

复合引擎利用底层硬件来有效的实时操作视图内容。

只需规定动画的起始点,CoreAnimation做剩下的工作。

因为Core Animation内嵌在UIView架构的底层,因此它总是可用的。

2.2.16Sprite Kit 框架

SpriteKit 框架 (SpriteKit.framework)框架为2d和2.5d游戏提供硬件加速的动画系统。

SpriteKit提供大多数游戏需要的基础,包括一个图形引擎和动画系统,声音播放支持,一个物理仿真引擎。 使用SpriteKit不需你自己创建这些事情,使你聚焦在内容设计和内容的高级别的交互上。

在Sprite Kit应用中内容组织为场景。一个场景包括纹理对象,视频,路径图形,核心图像过滤器和其它的特效。SpriteKit利用这些对象,确定这些对象到屏幕上的最有效的方式。当在场景中到了动画内容的时刻,你能使用SpriteKit来显式规定你想执行的行动或使用物理仿真引擎来为那些对象定义物理行为(例如重力、引力或排拆力)。

除了SpriteKit框架,也有其它Xcode工具来创建颗粒发射效果和纹理图。你能使用Xcode工具来管理应用资源和快速地更新Sprite Kit场景。


 
swift 更多文章 搬运自YouTube的一些不错的Swift语言视频教程 IOS框架和服务介绍(一)Cocoa Touch Layer(触摸UI层) Swift语言大改动已结束? iOS开发Tips block与delegate使用对比
猜您喜欢 《暗时间》-刘未鹏 iOS开发之UILabel 探访用大数据“思考”的IBM美国沃森研究中心——转《人民日报代表团访美墨记》 MariaDB 10.1 每秒可处理一百万查询 搜索那些事——细谈lucene(二)lucene搜索程序组件详解