iOS 4层结构(iOS技术概要)—— Media 层(二)

2023-11-01

Media层

媒体层提供了图形、音频和视频技术支持,以达到移动设备上极佳的多媒体体验。

一、图形技术

高品质图形是iOS应用程序非常重要的一部分,最简单(和最有效)的方法来创建一个应用程序是使用预渲染图片与UI标准控件结合实现系统绘制。然而,有些时候你可能需要一些稍微复杂的图形,你可以使用下面的技术来管理你的图形内容:

1、Core Graphics(Quartz)处理本地2D矢量图形和基于图像的渲染 -------Core GraphicsFramework

2、Core Animation提供视图动画高级支持-----Quartz Core Framework

3、Core Image提供视频和静态图片的高级支持-----Core Image Framework

4、OpenGL ES和GLKit 提供2D、3D硬件加速渲染接口------OpenGL ES Framework      GLKit Framework。

5、Core Text提供了一个复杂的文本布局和渲染引擎。-----Core Text Framework。

6、Image I/O提供大部分图像格式的读写接口。-------Image I/O Framework

7、Assets Library framework提供了在用户相册访问图片和视频的接口------Assets Library Framework

在大多数情况下,应用程序运行在Retina屏设备上几乎不用对代码做任何修改。你画的任何内容会自动支持高分辨率屏幕。基于矢量的绘图代码,系统框架自动帮你完成了像素的填充。如果你在程序中使用了图片,系统自动帮你加载高分辨率图片。------App-Related Resources介绍了如何适应高清屏幕

 

二、音频技术

音频技术在iOS中被设计用来提供丰富的音频用户体验。这个体验包括:播放高品质音频,录制高品质音频,以及触发某些设备的震动功能。

系统提供了几种方法来播放以及录制音频内容。接下来的框架列表是按照高层到底层的顺序列举的。Media Player Framework是最高层的音频接口,当选择一个音频技术的时候,高层的框架是最容易使用也是最优先的。低层框架提供更大的灵活性和控制,但是需要你做更多的功能。

(1)Media Player framework提供简单的方式访问用户的iTunes列表,支持播放列表并且能监测播放状态。------Media Player Framework

(2)AV Foundation 提供了一系列简单易用的OC接口用于管理音频播放和录制。------AV Foundation Framework

(3)OpenAL 提供了一系列跨平台接口提供位置音频。------OpenAL Framework

(4)Core Audio框架提供了 简单和复杂接口来播放以及录制音频内容。你使用这个接口播放系统的警告,手机震动,管理缓冲,播放多通道本地或流音频内容。------Core Audio

iOS支持以下音频格式:------Media Layer Frameworks

AAC

Apple Lossless(ALAC)

A-law

IMA/ADPCM(IMA4)

Linear PCM

u-law

DVI/Intel IMA ADPCM

Microsoft GSM 6.10

AES3-2003

 

三、视频技术

无论你播放应用程序的电影文件还是网络上的视频流,iOS提供了几种播放视频内容的技术。设备的硬件可以捕获视频并且应用到你的程序中。

系统提供了几种途径播放以及录制视频,你可以根据需要选择使用这些技术。当选择一个视频技术,记住,高级框架帮你做了很多工作,简化了操作,应该首选高级框架。下面的框架列表是按从高到低顺序列举的。

(1)UIImagePickerController类提供了使用设备录像的接口。

(2)Media Player Framework提供了一系列简单易用呈现全屏或者小屏视频的接口。-----Media Player Framework

(3)AV Foundation Framework提供了一些列OC接口用于管理捕获或者播放视频。-----AV Foundation Framework

(4)Core Media 描述了高层框架使用的底层数据类型,提供了低层接口操作媒体。-----Core Media Framework

iOS支持播放以下后缀的文件:.mov、.mp4、、m4v、.3gp

压缩标准:

H.264 视频 最高达1.5Mbps,640x480像素,每秒30帧。低复杂度版本的H.264基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

H.264 视频 最高达768Kbps,320x240像素,每秒30帧。基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

MPEG-4视频,最高达2.5Mbps,640x480像素,30帧每秒,基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

想获得更多关于UIImagePickerController类的使用,参考Camera Programming Topics foriOS.

 

四、AirPlay

AirPlay 是一中能让你应用程序的音频流在Apple TV或者其他第三方的扬声器或者接收器上播放的技术。AV Foundation框架和Core Audio都内置了AirPlay。使用上述框架,一旦你选择使用AirPlay播放音频,都会被系统自动处理以及转换。

在iOS5里,用户可以AirPlay将iPad2上的内容映射到Apple TV2上。开发者可以创建UIScreen对象通过AirPlay展示不同的内容到iPad2上。iOS5同样提供了多种方式通过AirPlay传递内容,包括使用AV Foundation Framework中的 AVPLayer以及UIKit的中的UIWebView,此外,Media Player Framework支持显示 “正在播放”信息在多个地方。-------AirPlay OverView。

 

Media 层框架

Assets Library Framework

iOS4.0之后引入的,提供了一个基于查询的接口来检索用户设备上的照片和视频。使用这个框架,你可以在自己的程序内来访问 Photos 应用程序的 相册以及视频资源。同样可以存储照片或者视频到相册。

更多这个框架中类和方法的介绍,参考 Assets Libarry FrameworkReference。

 

AV Foundation Framework

iOS2.2中引入,框架包含了 用于播放音频内容的OC类。你可以使用这些类播放任意时长的 基于文件或者内存的音频。你可以同事播放多个声音,可以控制每个声音的各个方面。iOS3.0之后,这个框架还可以录制音频以及管理音频会话。iOS4.0之后,这个框架的服务扩大到了:

1、媒体资源管理

2、媒体编辑

3、电影捕捉

4、电影回放

5、跟踪管理

6、媒体元素据管理

7、立体声

8、精确同步声音

9、一个OC接口来确定声音的文件信息,例如数据格式,采样率,和声道数量。

iOS5以后,AV Foundation Framework包含了 支持通过AirPlay播放音频、视频流的类AVPlayer。AirPlay默认是启用的,但可以根据需要设置开启或关闭。

AVFoundation Framework 是iOS中单独来录制和播放音频、视频的框架,相对于高级框架,在处理以及管理媒体资源上,提供了更为完美的支持 。

更多这个框架中类和方法的介绍,参考 AVFoundation Framework Reference。

 

Core Audio

本地音频是有Core Audio家族一些列框架支持的,下面的表会列出这个家族。

Framework

Services

CoreAudio.framework

定义了Core Audio中要用到的各种音频数据类型那个.

---- Core Audio Framework Reference.

AudioToolbox.framework

提供音频文件和音频流的回放和录制服务,同样提供了管理音频文件,播放系统警告声音以及

设备震动接口 . ---- Audio Toolbox Framework Reference.

AudioUnit.framework

提供服务使用内置的音频单元,音频处理模块.----Audio Unit Framework Reference.

CoreMIDI.framework

提供底层MIDI服务. ---- Core MIDI Framework Reference.

MediaToolbox.framework

提供访问音频分接开关的接口.

 

Core Audio是一个基于C的接口,支持操作立体声音频,你可以使用Core Audio在iOS应用程序中生成、录制、混合以及播放音频。你还可以使用Core Audio来触发手机设备的震动功能。

更多Core Audio的信息,参考Core Audio OverView. 关于如何使用Audio ToolBox Framework播放音频,参考Audio Queue Services Programming Guide。

 

Core Graphics Framework

CoreGraphics framework包含Quartz 2D绘图API接口。Quartz是OSX中先进的、基于矢量绘图引擎。它提供了支持基于路径图,反锯齿的渲染、渐变、图片、颜色、坐标空间转换和PDF文档创建、显示和解析。虽然API是基于C的,但是却采用了基于对象的方式抽象了画图对象,使它更容易存储和重用你的图像内容。

更多关于如何使用Quartz绘图,参考Quartz 2D Programming Guide和Core Graphics Framework Reference。

 

Core Image Framework

iOS5引入,提供了一套强大的内置过滤器用于操作视频和静态图片。你可以使用内置的过滤器实现简单的操作(触摸纠正照片)以及高级的操作(面部检测)。使用这些过滤器的优势是,它们在以无损的方式运作,保证你的原始图像是不会改变。此外,Core Image利用可用的CPU和GPU处理能力,确保操作是快速有效的。

     CIImage类提供了访问标准过滤器的方法,你可以使用它来提高照片的质量。创建其他类型的过滤器,你可以创建和配置一个CIFilter对象实现你需要的过滤器。

更多关于Core Image Framework里类和过滤器的信息,参考 Core Image Reference Collection。

 

Core MIDI Framework

iOS4.2引入,提供了标准的方法与MIDI设备通信,包括硬件键盘和合成器。你用这个框架来发送和接收MIDI的消息以及与能连接到iOS设备的设备交互(通过网路相连或者桥接器)。

更多关于这个框架的信息,参考 Core MIDI Framework Reference

 

Core Text Framework

iOS3.2引入,包含一组简单的、高性能的基于C的接口布局文本和处理文字。Core Image framework提供了一个完整的文本布局引擎,您可以管理文本在屏幕上的位置,你管理的文本可以使用不同的字体以及渲染属性。

这个框架主要用于处理复杂文本,比如文本处理程序。如果你的应用程序只需要简单的文本输入和显示,你应该继续使用UIKit中的文本类。

更多关于Core Text接口的信息,参考 Core Text Programming Guide和Core Text Reference Collection。

 

Core Video Framework

iOS4引入,提供接口导入和导出图像数据和图像元素据,这个框架利用Core Graphics数据类型和函数支持所有iOS上可用的图像类型。

iOS6之后,你可以使用这个框架来访问IPTC、EXIF元素据属性和图像。更多这个框架的函数和数据类型,参考 Image I/O ReferenceCollection。

 

GLKit Framework

iOS5引入,包含一组基础工具类,简化了创建OpenGL ES2.0程序。GLKit支持四个关键领域的应用开发:

1、GLKView和GLKViewController提供一个标准的实现视图和关联启用OpenGL ES的渲染循环。视图管理层framebuffer对象代表应用程序,你的程序只需要往上面画。

2、GLKTextureLoader提供了图像转换和加载程序到您的应用程序,让它自动加载纹理图像到你的上下文,它可以同步或一部加载纹理。异步加载纹理时,您的应用程序提供了完成处理block,当你的被加载到上下文的时候触发。

3、框架提供了实现GLKit向量、矩阵、四元素以及矩阵堆栈操作,提供相同的功能在Open GL ES 1.1中

4、GLKBaseEffect、GLKSkyboxEffect和GLKReflectionMapEffect类提供现有的、可配置的图形着色器,实现常用的图形操作。特别是在OpenGL ES 1.1规范中,GLKBaseEffect类实现了照明和素材模型,简化了从OpenGL ES1.1到OpenGL ES 2.0迁移所需的工作。

更多关于GLKit框架中类的介绍,参考 GLKit Framework Reference.

 

Media Player Framework

提供播放音频和视频内容高层支持,你可以使用系统标准接口播放视频。

在iOS3.0,增加对用户iTunes音乐库的访问支持,你可以播放单个音乐和音乐列表,搜索歌曲以及呈现媒体选择界面给用户。

在iOS3.2,增加了视频窗口的大小调整接口(以前视频只能是全屏的)。此外,增加了众多的接口来配置和管理电影的播放。

在iOS5,增加了“正在播放”信息在锁屏界面。这些信息可以通过AirPlay显示在Apple TV上。还有接口能监测视频是否正在使用AirPlay显示。

更多关于Media Player Framework中类的信息,参考Media Player Framework Reference.更多关于如何使用iTunes列表的信息,参考 iPod Library AccessProgramming Guide。

 

OpenAL Framework

OpenAL接口是一个跨平台的音频接口,你可以在游戏或其他程序中用它来完成高性能、高质量的音频服务。因为是一个跨平台的OpenAL标准,所以很容易使用它来实现跨平台。

更多OpenAL的信息,以及如何使用它,参考http://www.openal.org

 

OpenGL ES Framework

提供工具来绘制2D和3D内容。它是一个基于C的框架,与设备硬件紧密合作,为全屏游戏提供高帧率渲染。通常OpenGL框架结合EAGL接口使用,这些接口是OpenGL ES框架的一部分,在OpenGL ES绘画代码和UIKit框架中的视图、窗口对象之间提供接口。

iOS3.0之后,包含了既支持OpenGL ES 2.0又支持OpenGL ES 1.1的接口规范。2.0规范提供了支持片段或顶点着色的着色器(仅支持部分iOS设备,且iOS系统在3.0以上)。1.1规范支持所有iOS设备以及所有iOS系统版本。

更多关于如何在应用程序中使用OpenGL ES的信息,参考OpenGL ES Programming Guide for iOS。

 

Quartz Core Framework

包含Core Animation接口,Core Animation是一个先进的动画合成技术,优化渲染路径来实现复杂的动画和视觉效果。它提供了一个高层次的OC接口(使用硬件性能)来配置动画效果,你可以使用OC接口创建自定义的动画。

更多关于如何在程序中使用Core Animation的信息,参考Core Animation Programming Guide以及Core Animation ReferenceCollection。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 4层结构(iOS技术概要)—— Media 层(二) 的相关文章

随机推荐

  • 正则验证

    一 校验数字的表达式 数字 0 9 n位的数字 d 2 至少n位的数字 d n m n位的数字 d m n 零和非零开头的数字 0 1 9 0 9 非零开头的最多带两位小数的数字 1 9 0 9 0 9 1 2 带1 2位小数的正数或负数
  • 遍历dataframe中的某列,找出含有空格的元素

    工作上需要处理一个数据 把一个较大数据中的姓名列和账号列全部遍历一遍 然后看是否数据里面含有空格 一开始想法是用for循环 一行一行遍历df数据 这个方法效率太慢 搜索一下 有个博主发现了一个map函数 太厉害了 我直接用了 准备先贴我的代
  • IDEA中POM 项目parent中的dependencyManagement中的依赖版本号报红

    现象 IDEA中作为管理依赖的parent项目的pom文件中 在dependencyManagement中的dependency 如果指定的版本在本地仓库不存在 并且在子项目中也未引用的时候 会报红 疑惑 只是引用了很常见的依赖 并且版本官
  • 如何编写一个含有抄底信号的副图指标

    如果你作为通达信软件源代码的程序维护员 如何编写一个含有抄底提示的副图指标 请看下面的的示例教程 python语言 python 导入所需的库 import talib 计算移动平均线 def moving average data per
  • 【哈佛积极心理学笔记】第6讲 乐观主义

    第6讲 乐观主义 How can we create consciously and subconsciously a positive environment where we actually can take out the most
  • 小白学习一周 Linux命令

    文件系统管理相关命令 clear 清屏 pwd 打印当前工作目录 tmp 打开文件夹 cd 改变当前工作目录 mkdir 创建一个新文件夹 mkdir 在根目录下创建一个新文件夹 mkdir p 套娃创建文件夹 rmdir 删除当前目录下的
  • 图像数据处理 pytorch

    coding utf 8 Transfer Learning Tutorial Author Sasank Chilamkurthy
  • 双非计算机学硕报录比竟然有28:1?深圳大学20考研居然如此爆炸!

    深圳大学是一所双非大学 计算机学科评估B 软件工程学科评估没有 由于计算机实力在双非中很强 而且地处广东深圳 是信息行业和互联网行业比较发达的地区 因此深圳大学很受考生欢迎 但是深圳大学也很难考 深圳大学基本所有计算机相关专业都考408 这
  • 【Git】(一)基本操作

    读完本文后 您会了解 1 如何在本地配置GIT环境 2 环境配置成功后 如何从远端下载一个已有仓库到本地 1 配置全局用户名 邮箱 git config global user name username git config global
  • LeetCode 0198. House Robber

    问题简析 作为职业小偷 我要去打家劫舍 但是注意如果两家相邻房子在同一夜被打劫了 则会触发警报 现在给定一个非负整数构成的数列 代表连续的若干房屋中的财产数量 计算一晚上最多能偷多少钱 例如 nums 1 2 3 1 最大值为1 3 4 n
  • 论文End To End speech里一种seq2seq

    在End To End speech里介绍了一种更好的seq2seq的模型 效果我没有实际比较过 但是思路值得学习 接下来分享下 我的理解 虽然这篇论文讲的是Text To speech 但是主要模型架构使用的是seq2seq 主要的改进也
  • 高效真实的云渲染算法

    高效真实的云渲染算法 转 原文链接 http www cnblogs com effulgent archive 2008 10 06 1305029 html 原文 Realistic and Fast Cloud Rendering N
  • 飞书与IAI国际广告奖,协同实现国内营销史上的创新“云终审”

    防疫时期 线下营销活动暂停或无限延期 转型线上迫在眉睫 而想要高效地进行线上远程办公 一套实用而全面的线上协同工具不可或缺 今天的主角 IAI国际广告奖 是由中国传媒大学广告学院与IAI国际广告研究所联合主办的中国大型广告作品案例评选活动
  • 随笔:MySQL 查询事务状态字段说明

    今天一个朋友想查看一下的MySQL层事务提交状态经历的过程 比如我们常说的prapare flush sync commit 几个阶段 但是找了一下发现视乎没有视图可以看到一共看了3个地方 information schema INNODB
  • Elasticsearch实战(十二)---搜索推荐 match_phrase_prefix及fuzzy错误拼写模糊查询

    Elasticsearch实战 搜索推荐 match phrase prefix 文章目录 Elasticsearch实战 搜索推荐 match phrase prefix 1 搜索推荐场景 1 1 准备数据 2 搜索推荐实现 2 1 ma
  • nginx报404 not found错误解决

    一般报404错误都是因为nginx做了伪静态 去除了框架的index php 访问某域名时 去掉index php目录时达到效果一样 如 www test1 index php test2跟www test1 test2效果一致 在vhos
  • stm32flash碰到hex文件出错,读取超慢, 占用内存超多的问题解决

    这个问题是因为sdcc生成的hex的每行的地址并不是排序的好的 有些高的地址在前面 低的地址在后面 这样的话 stm32flash这个hex c并不能处理这个情况 里面有一个逻辑是用来填补0xff的 当后面的地址比前面大 一减得负数 但是变
  • TCP协议详解(三次握手,传输数据,四次挥手)

    首先来了解一下什么是TCP 传输控制协议 简单点来讲TCP它是一种网络通信协议 旨在通过internet发送数据包 TCP是OSI层中的传输层协议 第四层 用于通过传输和确保通过支持网络和internet传递消息来在远程计算机之间创建连接
  • React Native环境及项目配置搭建

    安装RN环境卡了我好久 在网上搜了很多都不全遇到很多坎儿 时至今日我终于装好了 打算写一个详细过程造福大众 也算是对自己总结更深层的记忆 1 首先看官网 React 注意要点 必须要有node javaJDK和AndroidStudio 再
  • iOS 4层结构(iOS技术概要)—— Media 层(二)

    Media层 媒体层提供了图形 音频和视频技术支持 以达到移动设备上极佳的多媒体体验 一 图形技术 高品质图形是iOS应用程序非常重要的一部分 最简单 和最有效 的方法来创建一个应用程序是使用预渲染图片与UI标准控件结合实现系统绘制 然而