MPEG-4系统交互性原理与实现
来源:世界广播电视 作者: 时间:2004-12-13 21:43
(华强电子世界网讯) MPEG-4允许用户和呈现内容进行交互。这种交互主要分为两类:客户端本地交互和客户—服务器端交互。客户端本地交互包括内容的操纵,特别是一个场景描述节点属性的改变,如对象位置的改变、使其可见或消失、改变一个合成文本节点的字体大小等,都能够通过激发用户事件而实现。一个用户事件可以是鼠标的点击或键盘命令,以更新场景描述。服务器端交互包含发生在传送终端由用户动作引发的对内容的操纵,它需要一个回传通道。
MPEG-4本地交互的多媒体系统的关键问题是交互式多媒体场景的描述、对象描述符的概念,以及场景描述和基本码流的关联。
一 交互式的场景描述
MPEG-4最大的特点是基于对象,即将媒体元素作为对象来进行单独编码。为了在终端重新构建一个多媒体场景,只传输这些原始的视听数据是不够的,需要额外的信息在接收端来组合这些视听数据,并创建和显示一个有意义的多媒体场景。而场景描述就是用来说明如何根据AV对象的时间和空间属性有效地将它们组织起来的,是实现交互性的重中之重。
1. 场景描述的概念
场景描述作为MPEG-4系统规范的一部分,规定了场景中AV对象的组织方式,描述了用于传输时空位置的信息格式,这样的信息足以将各个解码重构后的AV对象组合和重现。为什么要将场景描述信息与AV对象分开呢?这是因为场景描述信息是场景结构的属性而不是单个AV对象的属性,因此,它也要单独编码并用单独的流和编码对象一起传输。这对于比特流的编辑和基于对象的MPEG-4的功能实现,以及终端用户对场景修改的参与,即交互性,都是非常重要的。
场景描述的表示称为二进制格式场景(Binary Format for Scenes,BIFS),其是基于VRML的,表示预定义的视听对象和行为及时空关系的集合。BIFS的目的就是携带场景描述信息,它首先是一个协议:规定了如何重现MPEG-4对象的场景图,实现对象的动画和交互行为,以及对这些元素的发送加以时序化和同步化;其次,它定义了事件处理、对象组合的节点和运行规则;另外,它还是一种有效的对数据进行重现和发送的压缩工具。
2. 场景描述的特征
a.场景结构
一个场景描述带有一个可以用图表示的层次结构。图节点构成了视听对象,如图1所示。
![]() |
场景描述采用如图1所示的树状结构,是为了便于增加场景的编辑和交互功能。树的每个叶节点都是一个基本节点,它对应于一个基本流,任何一个子节点(叶子)的父节点都是复合节点,复合节点主要用于场景的编辑和组合。在实际应用中,这种结构并不是静态结构而是动态结构,即用户能够实施添加、删除和改变节点等操作。
b.节点和域
BIFS场景描述由节点集合组成,这些节点用来描述场景结构,因此MPEG-4的场景图也可以称为节点图。场景中的一个视听对象用一个或者多个节点描述,它们可能被集合在一起(使用组节点)。MPEG-4主要定义了以下节点类型:
(1)分组节点:创建场景结构。
(2)子节点:组节点的子节点,用来表示场景中的多媒体对象。
(3)可捆绑子节点:一种特殊类型子节点,用来表示一组节点类型,这些节点类型一次只有一个有效,例如3D场景的视点节点(Viewpoint),可以包含多种视点,但一次只有一个视点有效。
(4)内插器节点:子节点的另一种类型,用来表示进行帧动画制作的插入数据。
(5)传感器节点:检测用户的动作和环境的变换以创作交互的场景。
BIFS由一个分层树状的节点集组成,每个节点用来表示变换场景中的一个视听对象;节点又由表示节点特性的一组域组成。
节点域有时表示一个值,如球节点的半径域;有时表示许多值,如定义一个多边形的顶点的列表。节点用包含一个节点名和节点中域的列表的语法形式来定义,列表中规定了每个域标示、类型、名称和默认值。许多节点都包含其它节点的域,这就是场景描述构成树状结构的原因。
3. 场景描述的交互
a.基于VRML的事件模式
为了描述场景对象的交互性和行为,使用传感器和路由来描述这些交互行为。传感器节点产生基于用户交互和场景变化的事件,这些事件被传输给插值器和其余节点以改变这些节点的属性,如果事件被传输到一个插值器,则根据输入值插入一个新的参数,并最终传输给处理该事件的节点。
b. 流式场景描述的更新:
![]() |
在MPEG-4中,场景描述的基本思路及模型是在客户端先下载一个初始化场景,然后再接收,所以场景可以看作流式场景描述更新。
BIFS-Command机制使得场景图中的属性可以改变,如场景图节点和行为。BIFS-Command用来修改场景在某个给定时间的一系列属性。为了能够在一个单一访问单元中发送几个命令,命令被组合到CommandFrames中。BIFS-Command定义了4个基本命令:Replacement of an entire scene;Insertion;Deletion;Replacement。
c. 场景的外部动画:BIFS-Anim
BIFS-Anim提供了场景图中节点的某些域的连续更新,它被用来组合各种动画。尽管BIFS-Anim和BIFS-Command都有相同的基本码流类型,但它们不会在同一个基本码流中传输。BIFS-Anim信息在一个独立的基本码流中传输,它独立于传输BIFS-Command元素的码流。
4. 场景描述的压缩和流化
作为压缩工具,BIFS对场景使用了紧致的表示方法,即场景描述节点使用一系列参数,通过对参数编码而大大提高压缩比。
在节点编码中,引入了节点数据类型(Node Data Type,NDT)的概念。每个节点可以属于一个或者一个以上的NDT。每个NDT有一张NDT表,列出了所有属于该NDT的节点。对该节点编码时,只需要知道节点在NDT表中的位置。
使用量化参数节点可以获得量化的BIFS场景。量化参数节点将影响在它前后出现的所有节点的域值量化。BIFS域值的量化非常复杂,因为无法从信源数据获得准确的统计数据,所以要找到一个折中的机制,既能够令使用量化参数节点花费的开销最低,又能获得最佳量化。为此,提出了域值量化类型的概念,一共划分为14个域值量化类型,每个节点的每个域都属于一种量化类型,量化类型中包含了域值的变化范围数据(即最大和最小值)及该域值线性量化所需比特数。当一个域要编码时,首先要在该域所在节点的节点编码表(Node Coding Table,NCT)中找到该域的量化类型,然后根据量化参数节点中对这种量化类型所作的说明(包括使用比特数和域值变化范围)对域值进行量化。
二 对象描述框架
![]() |
图3展示的是MPEG-4标准中描述的一个完整的多媒体系统。从图中可以看到,MPEG-4将AV对象、场景描述信息、对象描述符等作为基本码流进行传输,依靠场景描述信息和对象描述符将AV对象组合、生成多媒体交互式场景。MPEG-4系统为此规范了一个对象描述框架,以把基本流和场景描述连接起来组成MPEG-4场景。
对象描述框架由一系列描述符组成,这些描述符可以识别、描述并将有关的基本码流联系起来,还可以将基本码流和在场景描述中使用的视听对象联系起来。对象描述符代码是数字识别符,它将对象描述符和场景描述中合适的节点联系起来。对象描述符包含在基本码流中,并有时间戳指示其有效性。
1. 与MPEG-2的联系和区别
MPEG-4对象描述符(Object Descriptor,OD)是对象描述框架的核心概念,其是一个容器结构,封装了一系列基本流的设置和相关信息的所有内容。包含在对象描述符中的一系列子描述符描述了媒体流终端解码器所需的配置信息,以及用于此流的同步层语法。反过来,从场景描述的观点来看,每一个对象描述符将许多流聚集在一起而被看作一个独立的实体。场景描述中的OD被指定了唯一的ID识别符,这样可以在单独的流中传输而能被识别出来,场景描述就可以不直接对媒体基本流进行描述,而是借用每一基本流相关联的对象描述符进行场景的描述。也就是说,场景描述用对象描述符代替媒体流进行场景的描述。
MPEG-4系统中的描述符与MPEG-2系统中的描述符在形式上差不多,都是以8位标签值开始,用以表示描述符唯一的标识;标签值之后是各自的数据字段,只是少了描述符长度这一字段。两者无论在作用上、还是在使用的重要性上,都有很大的不同。MPEG-2系统中的描述符称作原始流描述符,用来说明原始流定义的结构,提供了一种可扩展定义的识别方式,为传输的媒体或数据作一些补充说明,或者由于应用的需要而附加一些必要的信息,如条件访问(CA)。
MPEG-2的描述符并不是一定要有,而是根据应用的需要而采用;而MPEG-4系统中所用到的描述符是必不可少的,例如初始化描述符。时钟参考和时间标记等重要信息,在MPEG-2中并不用描述符来说明,而是放在打包基本流(PES)中;但在MPEG-4系统中,这些重要信息及对解码器的配置信息都需要描述符来说明,一旦少了描述符,解码器就无法对媒体流进行解码。同时,对象描述符提供了一种间接的机制,以便将场景结构、媒体对象同所用传输设备分开,使得它们之间的运行不会相互影响。这些描述符用来识别、描述基本码流,并将基本码流和场景描述中的AV对象联系起来。
2. 对象描述符对场景描述和基本码流的联结
每个对象描述符都是描述符集合,它们描述一个或多个和一个节点(场景描述)有关的基本码流。这些基本码流和单一视听对象有关,它允许可扩展的内容表示。
对象描述符框架定义了所有必需的描述符,并留有扩展余地,它提供了一个完善的识别、描述和关联AV场景各种数据类型基本流的框架。描述符信息作为一个单独的基本流进行传输。常用到MPEG-4中的描述符主要有四个:
(1)初始对象描述符:用于首次对话时传送终端必需的配置和场景信息,有自己的ID识别(即可在独立基本流中传输)。
(2)基本流对象描述符:用于标识一个基本流,有自己的ID-ES_ID(即可在独立基本流中传输)。
上一篇:VoIP的发展原理与技术概述