QuickTime 是一款拥有强大的
多媒体技术的内置
媒体播放器,可让你以各式各样的
文件格式观看
互联网视频、高清电影
预告片和
个人媒体作品,更可让你以非比寻常的高品质欣赏这些内容。
软件结构
QuickTime包括影片
工具箱、
图像压缩两个管理器,加上内嵌的一套组件。
影片工具箱
应用软件通过调用在影片工具箱中的函数来实现QuickTime的功能。影片工具箱使应用程序可以储存、读取、操纵QuickTime影片中的时基数据。单独一段影片可以容纳好几种数据。例如,一段包含视频信息的影片可以包括
视频数据和伴随视频数据的
音频数据。
影片工具箱也提供了编辑影片的函数。例如,有这样的函数,可以通过移去部分视频和音轨来缩短影片,也有函数通过从其它影片中移入
新数据来扩展它。
图像压缩管理器
图像数据需要大量的
存储空间。存储640*480的32位色彩的图像需要的空间为1.2
兆比特。QuickTime影片中包含的一系列图像,需要许多倍这样的空间。图像压缩管理器提供了独立于设备和
驱动器的压缩和解压的方法,它也为实现外部的软硬件图像
压缩算法提供了一个简单的接口。它提供了
系统集成函数用来存储压缩图像,作为Macintosh机上的
PICT文件和Windows下的DIB文件。它也提供了使任何可以运行QuickTime的机器上的压缩PICT文件都可以自解压的功能。
大多数情形下,通过调用影片
工具箱函数或显示压缩图像来避开直接调用
图像压缩管理器。但是如果应用程序压缩图像或者用压缩图像制作影片,就可以直接调用图像压缩管理器函数。
QuickTime组件
苹果提供了许多QuickTime内嵌组件。苹果定义的内嵌组件类型包括图像压缩器、
媒体处理器和各种各样的工具。
(1)
数据处理器:包括有影片控制器组件、
图像压缩组件、图像转换组件、
视频数字化组件、
数据交换组件、声音处理组件、效果转换组件、预览组件等。
(2) 媒体处理器:包括有衍生媒体处理器组件、动画媒体处理器组件、中间媒体处理器组件等。
(3) 工具:包括有时钟组件、标准声音组件、顺序抓取组件、顺序抓取通道组件、文本轨道组件、顺序抓取面板组件等
档案格式
1998年2月11日,
国际标准组织(ISO)认可QuickTime档案格式作为
MPEG-4标准的基础。这个行动的支持者表示QuickTime提供一个好的“生命周期”格式,很适合做撷取、编辑、档案、散布、和播放(相对于简单以档案为串流资料方式的
MPEG-1和
MPEG-2而言,不适合作编辑之用)。在2002年开发者增加了
MPEG-4的
相容性到QuickTime6。然而,
苹果电脑延迟这个版本的推出达到数个月之久,是因为MPEG-4授权本身的争议,要求提出的授权金会限制很多使用者和内容的提供者。在妥协之后,苹果电脑于2002年7月15日推出QuickTime6。
软件特点
QuickTime是
苹果公司提供的系统及代码的
压缩包,它拥有C和
Pascal的
编程接口,更高级的软件可以用它来控制时基信号。应用程序可以用QuickTime 来生成,显示,编辑,拷贝,压缩影片和影片数据,就象通常操纵
文本文件和静止图像那样。除了处理视频数据以外,诸如QuickTime3.0还能处理静止图像,动画图像,
矢量图,多音轨,MIDI音乐,三维立体,虚拟现实全景和虚拟现实的物体,当然还包括文本。它可以使任何应用程序中都充满各种各样的媒体。
它是一个多媒体平台
无论是来自你的
数码相机或移动电话的视频,
Mac 或 PC 上的影片,还是网站上的媒体片段,不论你想看什么、想在哪里看,QuickTime 技术都能为你实现。
QuickTime Player 拥有简洁的设计和易用的控制选项,呈现的一切为你带来更多愉悦享受。其界面干净利落,绝不会妨碍你观看画面。想要快进播放影片或慢速播放?通过一个便捷的滑块,你可以将播放速度设置为标准速度的 1/2
倍速到 3 倍速。你还可以快速搜遍单独的一段
视频帧。
它拥有先进的视频技术
QuickTime 拥有称为
H.264 的先进
视频压缩技术,以更少的带宽和存储空间呈现绚丽、清晰的
高清视频画面。这样,无论你在何处观看视频,都能感受到原生视频品质。
QuickTime 可让你用数字媒体实现更多。有了 QuickTime 7 Pro,你可以将你的文件转换为多种格式,还可录制并剪辑你的作品。第三方插件可以多方向扩展 QuickTime 技术。QuickTime
流媒体解决方案让你可以流
传输方式在互联网上传播你的媒体内容。
主要功能
跨平台特性
QuickTime是一个跨平台的多媒体架构,可以运行在Mac OS和Windows系统上。它的构成元素包括一系列
多媒体操作系统扩展(在Windows系统上实现为DLL),一套易于理解的API,一种
文件格式,以及一套诸如QuickTime播放器,QuickTime
ActiveX控件,以及QuickTime
浏览器插件这样的应用程序。
可实现的任务
QuickTime可以用于实现如下一些具体的任务:播放电影和其它媒体,比如
Flash或者MP3音频对电影和其它媒体进行非破坏性的编辑。在不同格式的图像之间进行导入和导出,比如JPEG和
PNG对来自不同数据源的多个媒体元素进行合成,分层,和排列把多个依赖于时间的
媒体同步到单一的时间线上捕捉和存储来自实时源的数据序列(sequence),比如音频和
视频输入以编程的方式将制作完成的数据作成电影使用智能化和脚本化的
动画制作精灵创建与阅读器,
远程数据库,和应用程序服务器相互交互的演示创建包含定制形状的窗口,“皮肤”,以及各种控件的电影在网络或者因特网上实时生成电影流广播从诸如照相机和麦克风这样的直播源得到的实时流分发位于磁盘,网络,或者因特网上的可下载媒体。
QuickTime架构
QuickTime架构中广泛使用了
构件技术,它使构件可以独立为一个模块,并具有灵活性和
可扩展性。QuickTime构件是接口定义良好的共享代码资源。人们为QuickTime增加一个新的构件,并使已有的应用程序可以自动找到和使用该构件,这很大程度上是因为这个新构件和同属一个大类的已有构件一样,都对同样的API进行响应。
举例来说,QuickTime可以处理很多媒体类型:声音,视频,文本,精灵,Flash,3D模型,图片虚拟现实,还有一些其它类型。每种媒体类型的处理,都需要一个媒体处理器构件来支持。QuickTime支持的媒体数量和类型都是不断增长的,您自己可以通过创建一个新的媒体处理器构件,来为QuickTime增加一个新的媒体类型。
使用技巧
QuickTime电影通常以QuickTime电影文件的形式存储在磁盘上。这些文件往往同时包含电影引用的
样本数据。QuickTime
API中包含一些函数,用来将电影或者电影及其相关联的样本
数据存储到文件中。缺省情况下,电影数据结构存储在文件的开头(以一个'moov'原子的形式进行存储),紧跟的是样本数据(通常包装在一个'mdat'原子中)。各种样本数据在缺省情况下会按照某种形式进行编织,以便使同一时刻显示的媒体数据的存储地点彼此靠近,同时,
播放时间比较早的媒体首先被存储。
这种典型的电影文件可以通过web服务器,或者使用诸如
HTTP和
FTP这种常见的协议来分发,等同于一个
HTML文件或者
JPEG图像文件。只需要把文件正确地命名,并正确地将
文件扩展名和服务器上对应的
MIME类型关联起来,就可以了(QuickTime电影文件正确的扩展名是.mov,其对应的MIME类型是'video/quicktime')。
在通过网络分发,或者通过
英特网下载一个文件的时候,整个文件并不是马上就到达本地,但是一个典型的QuickTime电影在下载的同时就可以播放。这个技术叫做渐进式下载(Progressive Download),或者快速开始(Fast Start)。这是由于电影原子被存储在文件的起始部分,所以即使电影的样本数据还没有到达本地,QuickTime也知道如何对之进行解析;同时也因为QuickTime根据显示的时间顺序对电影数据进行智能的编织。
在创建电影时,先存储电影的样本数据,紧接着再存储电影数据结构也是可以的。但是通常都不希望使用这种做法,因为这样会使QuickTime一直等到整个文件都下载完成后,才能对样本数据进行解析。您可以简单地在QuickTime中打开电影文件,并将它存储为一个新的自包含文件,来修正这种数据顺序颠倒的问题。在缺省情况下,QuickTime将电影数据结构存储在文件的起始部分。
QuickTime电影文件可能只包含一个电影数据结构,而该结构指向的样本数据位于其它文件或者URL中。在大多数情况下,这种类型的电影文件也可以在电影数据下载的同时进行播放,这是因为电影数据结构使QuickTime可以解析即将到来的数据,也因为每个轨道的
数据源都被独立指定,网络独立而又同时地进行所有轨道媒体数据的分发,从而实现某种形式的编织。很明显,在可靠性上这种编织不如QuickTime创建自包含电影文件时进行的深入编织,因此播放的时候可能不总是那么平滑。
当连接的带宽满足或者超过电影
数据率的要求时,一个组织良好的QuickTime电影文件就可以边下载边播放。这种类型的渐进式下载电影,或者说是快速开始电影,就可以提供与实时
流媒体一样的
用户体验。
如果连接的速度不足以实时播放电影,则您可以等下载完成后才进行播放,或者播放当时已经下载的部分。QuickTime甚至可以估计需要的下载时间,并在它认为已经有足够的数据可以平滑播放的时候开始播放(因为剩下的数据可以在需要的时候到来)。
QuickTime电影也可以通过诸如
RTP和
RTSP这种实时协议来分发。那样的话需要一个
流媒体服务器,比如QuickTime流媒体服务器,或者
Darwin流媒体服务器。为了实时生成电影流,服务器需要知道如何对电影中的各个轨道进行分包,这些信息存放在QuickTime电影中的一个称为索引轨道(hint track) 的特殊轨道中。在QuickTime API中有一些函数,可以在现有的电影中增加一个索引轨道,还有一个标识可以通知QuickTime在将电影存入磁盘的时候创建一个索引轨道。
带有索引轨道的电影也可以通过HTTP或者
FTP协议来进行渐进式下载,但是需要额外的带宽来下载仅对
流媒体起作用的索引轨道。因此,最好首先确定电影的分发方式,然后再确定是将电影存储为索引电影,还是非索引电影。
对于电影文件,除了渐进式下载和实时流媒体这两种分发方式,QuickTime还支持直播(broadcasting)方式,即从诸如照相机或
麦克风这样的实时源中取得数据,创建一个或者多个实时流。这个过程包括捕捉来自实时源的数据,将这些数据按照期望的带宽进行压缩,并生向外传输的数据包流,所有的这些过程都是实时的。QuickTime的广播API只支持
Mac OS,不能支持Windows或者
Java。
QuickTime是一套大的API,有超过2000个函数及数十个构件。幸运的是,您通常只需要使用一小部分QuickTime API就可以完成一个具体的任务。问题在于如何才能知道应该使用QuickTime的哪个部分,以及如何才能找到可以指导自己的文档和例子代码。这正是讨论这个路线图的目的所在。
QuickTime通常会有多种方法可以实现同样的目的,一种是容易实现的方法,大多数工作QuickTime都替您完成了;另外一种则是提供一些不同层次的底层
工具箱,您可以通过这些工具箱来自行实现想要的功能。如果您发现自己已经陷入到某些复杂且令人沮丧的问题中,而这些问题应该很简单,则很可能是因为您使用的是不合适的工具箱。这时,请回到路线图上来,看看是否有更为高级的方法可供使用。
QuickTime API文档分成17个主要部分,下面列举这些部分及其相关连接。
“开始使用QuickTime”—获取进入QuickTime的方向,寻找sdk及
推荐读物。
“基础”— QuickTime概述,快速上手的教程,构件管理器,如何初始化QuickTime,以及如何打开和播放电影。
“Windows版本的QuickTime”—Windows版本与
Macintosh版本的QuickTimes之间的不同之处。
“
电影结构的基本知识”—初始化QuickTime,打开和播放电影,编辑和保存电影,使用QuickTime的
数据类型,为应用程序设置
回调函数。
“流媒体”—使用基于实时协议的流媒体,进行现场直播,或者为
流媒体服务器书写模块。
“深入电影结构的内部”—在轨道,属性和构件级别上使用电影结构;设置时间单位和层;对可视轨道进行旋转,歪斜,缩放,和变形;使用时钟控件,轨道引用和修饰轨道,预览及媒介
访问键。
“电影的创建”—捕捉和同步数据,以及创建你自己的电影;使用序列抓取构件(sequence grabber),特定媒介的序列抓取通道构件(比如文本),以及视频数字化器构件(video digitizers)。
“QuickTime的导入和导出”—将数十种其它格式的现有媒介导入到QuickTime中,将电影,轨道,或者图像导出为各种不同的非QuickTime格式及
文件类型。
“压缩和解压”—直接设置和使用图像和声音的
压缩器和解压器,数据
编解码器,以及图像编码转换器。
“视频效果和过渡”—使用QuickTime过滤器,远离和淡入淡出过渡,以及其它效果。
“
媒介类型和媒介处理器”—直接使用视频,声音,文本,
时间码,还有更多其它的媒介处理器,包括tween构件。
“虚拟现实”—使用
QuickTime VR全景和
立方体(cube),设置热点(hotspot),控制光标,增加交互功能。
“音乐和音频”—从底层处理音频,或者使用QuickTime音乐架构来合成音乐。
“传输和分发”—使用
数据处理器构件和视频
输出构件来从特殊的数据源(比如数据库)上获取电影和媒介数据,或者将视频发送到屏幕之外的
输出设备中。
“书写构件”—通过书写自己的构件来处理新的媒介类型,压缩方法,数据源,输出设备,
时钟源,以及更多其它对象,从而对QuickTime进行扩展。
技术剖析
QuickTime是建立在一些与
时基数据相关的概念基础之上的:
原子(Atom)、媒体结构(Media structures)、
组件(Component)、时间管理(Time management)、动画图像(Sprites)。
原子
QuickTime的原子是QuickTime用来构建等级
数据结构的基本容器。新创建的QuickTime原子就象树的根。随后的每个原子都包含在其中并且包含数据和其它原子。如果一个QuickTime原子包含其它原子,就被叫做父原子,包含在其中的原子就叫做叶原子。
应用程序和其它各种软件也可以用QuickTime
原子结构来
存储数据。
媒体结构
传统的视频由连续的
数据流组成。QuickTime影片可以按同样的方法构建,但它不需要这样做:QuickTime影片可以由取自不同来源的数据流组成,例如
模拟视频、存在
CDROM上的静止图像和
MIDI音乐。影片不是媒体,而是媒体的组织方式。
QuickTime影片通常是由许多轨道组成的。轨道不包含影片数据,它仅仅包含这些数据的索引,而真正的数据内容则存在于其它地方。这些数据索引组成了轨道的媒体结构。每个轨道都包含了一个独立的媒体结构和一个编辑列表,编辑列表用来以
时间顺序安排媒体结构。媒体结构和编辑列表是做为QuickTime原子来实现的。
组件
QuickTime支持组件使应用程序不需要知道QuickTime用什么技术和设备来工作的。许多QuickTime服务,例如压缩和解压都是组件来提供的。组件包括代码,它可以在整个系统中使用,也可以局部于一个特定的应用程序。每个QuickTime组件都实现一个特定的功能集并且提供给它支持的技术和
客户应用程序以特定的接口。因此应用程序和不同技术的实现和管理细节隔离开来。应用已存在的组件可以创建新的组件。例如,你能生成一个组件来支持一种特殊的数据
加密算法。其它的应用程序通过连接你的组件也可以实现这些加密算法,而不用它们自己再来实现这个加密算法。
应用程序使用组件是通过调用
系统级的组件管理器。组件管理器使你可以定义和登记组件并可以通过使用一个标准的界面来和组件进行联系。一旦应用程序连接到组件上之后,就可以直接调用组件。当你生成了一种新的组件类的时候,你可以为这种新组件定义一种函数级接口。
时间管理
时间管理是QuickTime影片实现过程中重要的一部分,有时也是比较复杂的一部分。为了控制影片的
时间维,QuickTime定义了时间
坐标系统,使影片和媒体的数据结构都使用共同的现实时间系统。时间坐标系统包括一个
时间尺度,这个尺度提供了在
真实时间和影片中的表面时间的转换。时间尺度以时间
单位表示。每秒中度过的
时间单位的数量量化了时间尺度。也就是26时间尺度是每秒中包含26个时间单位或者每个时间单位是1/26秒。时间坐标系统也包括持续时间,它是影片的长度或以时间单位来记数的媒体结构的容量。影片中的某点可以由到那一点经过的时间单位的数量来确定。影片中的每个轨道都由时间偏移和持续的时间组成,这些属性决定了每道开始的时间和长度。每个媒体结构都有自己的时间尺度。影片
工具箱把每种媒体数据从影片的时间
坐标系统中映射到媒体结构的时间坐标系统。
动画图像
在传统的视频动画中,你通过确定每个象素的颜色来描述帧。而动画图像通过确定出现在不同位置的图像来描述帧。每个动画图像都有属性,这些属性用来描述某个时刻图像的位置和外表。在动画过程中,应用程序修改图像的属性以使它可以改变外表并且可以围绕屏幕移动。动画图像可以和静止图像混合,用来在内存相对较少时产生较多的效果。