媒体同步
出自 MBA智库百科(https://wiki.mbalib.com/)
媒体同步(Media Synchronization)
目录 |
什么是媒体同步[1]
媒体同步是指根据媒体的播放过程同步显示文本、图形、图像和执行其他内容,媒体可以是包含声音或数字化电影等基于时间的数据。
影响媒体同步的因素[2]
在分布式多媒体系统中,由于媒体同步涉及多媒体数据的生成、传输和播放等多个方面,因此在这个过程中如果受到一些因素的影响,多媒体数据的同步关系就可能被破坏,从而导致不能正确地播放。下面将分别叙述影响媒体同步的因素。
- 1.媒体间的时延偏移
由于各个相关媒体流可能来自不同的发送端,每个发送端所处的地理位置可能不同,每个媒体流选择的信道也不同,因此各个媒体流的网络时延不等,这就是媒体问的时延偏移,这些偏移会使媒体问的时间关系变坏。解决办法是通过接收端的缓存加以补偿,也可使各个媒体流在不同时刻发送,但保证在经历不同的时延后能够同时到达接收端。
- 2.时延抖动
信号从发送端传输到接收端所经历的网络时延的变化,称为时延抖动。对于音频流和视频流,在发送端它们各自的LDU之间是等时间间隔的,两个流的相关LDU之间在时间上也是对应的,然而由于各个LDU经历的网络时延不同,因此音频流和视频流内部LDU的时间关系出现了不连续,两者之问的对应关系也被破坏。所以时延抖动会破坏媒体内和媒体间的同步。时延抖动通常通过在接收端设置播放缓冲区来补偿。
- 3.时钟漂移
在无全局时钟的情况下,由于温度、湿度或其他因素的影响,发送端和接收端的本地系统时钟频率可能存在着偏差。多媒体数据的播放是由接收端的本地系统时钟驱动的,如果忽略时钟漂移,经过一段时间之后接收端的缓冲区就会发生上溢或下溢,从而影响媒体同步。时钟漂移的问题可以通过在网络中使用时钟同步协议,例如网络时间协议(Network Time Protocol,NTP)来解决。
- 4.不同的采集起始时间
在有多个相关媒体流的情况下,发送端可能不是同时开始采集和传输信息。例如发送端分别采集图像信号和相关的伴音信号,若两者采集的起始时间不同,那么在接收端同时播放这两个媒体流时必然会出现唇音同步的问题。
- 5.不同的播放起始时间
在有多个接收端的情况下,各个接收端的播放起始时间应该相同。如果用户播放的起始时间不同,则获得信息早的用户便较早地对该信息作出响应,这对其他用户就不公平。
- 6.网络条件的变化
网络条件的变化是指网络连接性质的变化,例如网络平均时延的改变、时延抖动的变化和媒体单元丢失率的增大等。因此,在播放起始时已经同步的媒体流,经过一段时间后可能因网络条件的变化而失去媒体同步。
媒体同步控制技术[2]
由于非连续媒体对象自身没有时域约束关系,且非连续媒体对象和相关连续媒体对象之间的同步要求又较低,两者间的同步控制比较容易实现,因此在多媒体通信中,非连续媒体对象的传输以及非连续媒体对象和相关连续媒体对象间的同步控制并不是需要解决的主要问题。本节主要研究单个媒体流的媒体内同步和相关媒体流的媒体问同步。
到目前为止,对于相关媒体流的媒体间同步的控制技术还未形成通用的模式,许多方法都是基于特定的应用环境而提出的。因此本节对单个媒体流的媒体内同步的控制技术进行概述。
单个媒体流的媒体内同步的控制技术根据系统是否使用时间信息,可以分为面向时间的播放控制算法和面向缓冲区的播放控制算法两种类型。面向时问的播放控制算法给媒体单元打上时间标签,并且使用发送端和接收端的本地系统时钟来获得网络时延或者时延抖动,一般用于音频流。面向缓冲区的播放控制算法通过观察接收端的播放缓冲区的占用水平来估计当前的时延抖动,一般用于视频流。
- 一.面向时间的播放控制算法
面向时间的播放控制算法根据系统是否采用全局时钟和如何处理迟到的媒体单元可以分为采用全局时钟、不需要全局时钟、具有近似时钟同步和不维护时延等播放控制算法。
1.采用全局时钟的播放控制算法
使用全局时钟可以准确测量媒体单元的网络时延。而媒体单元到达接收端后还需经历缓冲时延再播放,网络时延和缓冲时延一起构成了播放时延。在获得网络时延后,接收端可以设置播放时延的值为一个常数,或者根据网络时延的变化来设置。
2.不需要全局时钟的播放控制算法
由于全局时钟不易获得,因此很多播放控制算法是对时延差异而不是网络时延进行操作的。当考虑时延差异时,发送端和接收端的本地系统时钟可以有偏移量,但是两个时钟的频率不能存在偏差。在这类算法中,媒体单元的播放时延不必为常数或被限制在某个绝对数值下,而是可根据网络时延的变化而变化。
3.具有近似时钟同步的播放控制算法
具有近似时钟同步的播放控制算法通过测量发送端和接收端之间的往返时间RTT来设定播放时延的上限,所有超过该上限的媒体单元都不播放。Roccetti等人提出的方法中利用周期的探测分组和三方握手协议来精确测量RTT,接收端的本地系统时钟设置为探测分组的时间标签,用来与发送端的本地系统时钟保持虚拟同步,因此两个时钟偏移量等于探测分组的单向网络时延t,而播放时延取为RTT+t,其中RTT是由最近的探测分组测量得到的。
4.不维护时延的播放控制算法
处理迟到的媒体单元有两种方法:一种是维护时延法,就是丢掉迟到的媒体单元以保持媒体流的时延需求;另一种是不维护时延法,即不丢弃一些或者所有迟到的媒体单元,当它们到达接收端时立即播放,以维持媒体流的连续性。一般的算法都采取维护时延法,在这些播放控制算法中,为媒体单元的到达时间规定了两个区域:等待区域和丢弃区域。等待区域中的媒体单元到达接收端后等待播放,直到它的播放时间;而丢弃区域中的媒体单元到达后直接丢弃而不播放。Liu等人在这两个区域中间引入一个新的区域:不等待区域,落在该区域的媒体单元的到达时间大于播放时间,但还不足以将其丢弃,因此立即播放。该算法可以维持媒体流的连续性,但增加了播放时延。多媒体通信域,落在该区域的媒体单元的到达时间大于播放时间,但还不足以将其丢弃,因此立即播放。该算法可以维持媒体流的连续性,但增加了播放时延。
- 二.面向缓冲区的播放控制算法
该类算法不要求媒体单元具有时间标签或者使用时钟,而是针对同步/时延的权衡进行处理。面向缓冲区的算法和面向时间的算法的类似之处在于,都采用时延差异的方法来调节播放时间,不过面向缓冲区的算法不是用时间标签来估计时延抖动,而是通过观察播放缓冲区的占用水平来估计的。由于缺少时间信息,该类算法不能保证播放时延的绝对值,而唯一“可见”的时延为媒体单元的缓冲时延,因此可以通过在媒体流连续性和缓冲时延之问进行权衡,以达到优化同步/时延权衡的目的。该类算法可以分为以下三种方法:没有初始化缓冲、跳过/暂停发送或者跳过/重复播放媒体单元、改变媒体流的播放帧率或者发送帧率。
1.没有初始化缓冲的播放控制算法
媒体单元到达接收端后不放人缓冲区中,而是立即播放。这种算法使得初始的播放时延,即第一个媒体单元的网络时延D,很低。但是当网络出现时延抖动时,所经历的网络时延大于D,的媒体单元都会由于迟到而丢弃,造成媒体流的不连续性。
2.跳过/暂停发送或者跳过/重复播放媒体单元的播放控制算法
当接收端的播放缓冲区的占用水平过高时,可以采取在发送端暂停发送媒体单元或者在接收端跳过播放媒体单元的方法;当占用水平过低时,则可以采取在发送端跳过发送媒体单元或者在接收端重复播放媒体单元的方法。这种方法可以尽可能地避免播放缓冲区的溢出。
3.改变媒体流的播放帧率或者发送帧率的播放控制算法
由于增加或者减少一个媒体单元的方法会破坏媒体流的连续性,且在低帧率(如15帧/秒)的情况下,这种操作容易被用户察觉,因此可以采取改变媒体流的播放帧率或者发送帧率的播放控制算法。改变媒体流的播放帧率或者发送帧率就是改变媒体单元的播放持续时间或者发送间隔。例如对于一个播放帧率和发送帧率为25帧/秒的视频流,每个视频帧的播放持续时间和发送间隔都是o.04s,当发生失步时,可以通过改变媒体单元的播放持续时间或者发送间隔来重新同步。改变媒体单元的播放持续时间其实是改变媒体单元离开播放缓冲区的时间,而改变媒体单元的发送问隔其实是通过改变媒体单元在发送端的发送时间来改变媒体单元到达播放缓冲区的时间。通过这种方法可以使播放缓冲区的占用水平保持在一个正常的范围内。
媒体同步的参考模型[3]
为了理解媒体同步的各种要求,确定支持同步的实时机制的结构以及实时机制接口间的关系,需要一个媒体同步的参考模型。本节从概念上讨论同步机制。
媒体同步需要系统的许多部分支持解决,包括操作系统、通信系统、数据库以及应用程序等。因此,一个多媒体系统的同步要从几个层次上加以考虑。为了更好地理解媒体同步的要求,描述并建立支持同步的机制,Blakowski等人将同步层分为四个子层,提出了一个四层的同步参考模型,如图1所示。每层有自己的接VI,接口定义一些服务,也就是为用户提供一种说明用户要求的方法。接口提供实现同步的机制,每层的接口都可以直接被一个应用程序使用,或者被它的高层利用来实现其接口。四层参考模型的意义在于它规定了同步机制所应有的层次以及各层所应完成的主要任务。
- 图1 同步参考模型
1.媒体层
媒体层提供一个独立于设备的接口,它的操作针对单个的媒体流的LDU。媒体层对LDU的处理通常是有时间限制的,因而需要底层服务系统(如操作系统、通信系统等)提供必要的资源预留及相应的管理措施(如服务质量保障等)。在媒体层接口,该层负责向上提供与设备无关的操作,如read(devicehandle,LDU)和write(devicehandle,LDU)等。其中,以devicehandle标识的设备可以是数据播放器、编/解码器或文件,也可以是数据传输通道。
媒体层主要完成两个任务:一是申请必要的资源(如CPU时间、通信带宽、通信缓冲区等)和系统服务(如服务质量保障等),为该层各项功能的实施提供支持;二是访问各类设备的接口函数,获取或提交一个完整的LDU。例如,当设备代表一条数据传输通道时,发送端的媒体层负责将LDU进一步划分成若干适合于网络传输的数据包,而接收端的媒体层则需要将相关的数据包组合成一个完整的LDU。实际上,媒体层是同步机制与底层服务系统之间的接口,其内部不包含任何的同步控制操作。
2.流层
流层的处理对象是媒体流以及媒体流所组成的媒体流组,在一个媒体流组中,所有的媒体流采用流间同步机制播放。该层的作用是维持单个媒体流内部各个媒体单元的时间关系及相关媒体流之间的时间关系,也就是说完成流内同步和流间同步。
在接口处,流层向用户提供诸如start(stream)、stop(stream)、start(group)、stop(group)和create—group(1ist—of—streams)等功能函数。这些函数将媒体流作为一个整体来看待,即对该层用户来说,流层利用媒体层的接口功能对LDU所作的各种处理是透明的。流层在对媒体流或媒体流组进行处理前,首先决定LDU的大小以及对各LDU的处理方案。此外,流层还向媒体层提交必要的Qos要求。媒体层将依照流层提交的QoS要求,向底层服务系统申请资源以及QoS保障。在执行LDTU处理方案的过程中,流层负责将媒体流的抖动及相关媒体流的偏移保持在许可的范围内,即实施流内和流间的同步控制。
3.对象层
对象层能够对各种类型的媒体对象进行统一处理,它隐藏了连续媒体对象和非连续媒体对象的差异。对象层的主要任务是实现非连续媒体对象和相关连续媒体对象之间的同步,并完成对非连续媒体对象的处理。与流层相比,该层同步控制的精度较低。
对象层在处理媒体对象之前先要完成两项工作:第一,从描述层提供的同步描述数据出发,推导出必要的调度方案(如播放调度方案、通信调度方案等);第二,进行必要的初始化工作。得到调度方案并完成初始化工作以后,对象层开始执行调度方案。通过调用流层的接口函数,对象层执行调度方案中与连续媒体对象相关的部分。流层利用媒体层的接口函数,完成对连续媒体对象的LDU的处理,同时进行流内和流间的同步控制。在调度方案的执行过程中,对象层主要负责完成对非连续媒体对象的处理以及非连续媒体对象和相关连续媒体对象之间的同步控制。
4.描述层
描述层是一个开放的层,不提供明确的接口。该层包含一些应用和工具,利用这些工具,用户可以生成同步描述数据。这些工具包括同步编辑器、多媒体文献编辑器及著作系统。描述层还提供转换工具,可将同步描述数据转换成对象层的格式。描述层还负责将同步要求提供给对象层接口。同步描述的方法主要有四种:基于间隔的描述、基于时间轴的描述、基于控制流的描述和基于事件的描述,这些都是较为抽象层次上的媒体同步的描述。
媒体同步的设置[4]
Authorware7.0提供了媒体同步技术允许声音图标和数字电影图标激活任意基于媒体播放位置和时间的事件。只要将文本、图形、图像的显示和对其他事件的计时同音频或视频信息并列,就能够轻易地在媒体播放的任意时刻控制各种事件。
若要进行媒体同步,具体的操作步骤如下:
(1)先从图标选择板中拖动一个声音图标拖放到流程线上。
(2)再将另一个图标(如显示图标)拖放到该声音图标的右边,就会出现一个“媒体同步”分支。在该图标的上方会出现一个同步标识,其形状看起来像一个闹钟,如图2所示。
- 图2 “媒体同步”分支
(3)双击“媒体同步”标记,就可以弹出“媒体同步”属性对话框,如图3所示。
- 图3 “媒体同步”属性对话框
(4)在对话框中可以对媒体同步分支的同步属性进行设置,以决定“媒体同步”图标的执行情况。具体的属性介绍如下。
①“同步于”下拉列表框:用于设置媒体同步图标的执行时机,提供了两个选项。
(a)“位置”:选择此选项可以根据声音或影像的位置来进行同步操作,在下面的文本框中就可以输入位置的值。如果是声音媒体,则位置值指毫秒数;如果是影像媒体,则位置值指帧数。
(b)“秒”:选择此选项可以根据声音或影像播放的时问来进行同步操作,在下面的文本框中就可以输入播放的时间(以秒为单位1。
②“擦除条件”下拉列表框:用于设置是否擦除“媒体同步”图标的内容,其提供了4个选项。
(a)“在下一事件后”选项:在程序执行到下一“媒体同步”分支时,擦除当前“媒体同步”分支中的所有内容。在程序执行到下一“媒体同步”分支之前,当前“媒体同步”分支中的所有内容将一直保留在演示窗口中。
(b)“在下一事件前”选项:在程序执行完当前“媒体同步”分支时,立即擦除当前“媒体同步”分支中的所有内容。
(c)“在退出前”选项:在程序执行完所有“媒体同步”分支后,再擦除当前“媒体同步”分支中的所有内容。
(d)“不擦除”选项:保持当前“媒体同步”分支中的所有内容不被擦除。在这种情况下,需要使用擦除图标来擦除被保留的内容。
③“打开”按钮:如果单击“打开”按钮,则会打开子图标的演示窗口。