1、概述
自有电视业务以来,人们便不满足于仅被动地接收电视节目。用户一直希望能够按自己的意愿获得所喜爱的电视节目。这也不难理解为什么20世纪80年代,人们希望使用MTV;20世纪90年代人们希望使用视频点播业务;近几年,人们希望使用Internet协议电视(IPTV)业务。事实上目前所谈的IPTV在某种意义上讲是20世纪90年代视频点播业务(VOD)的一种继续。
VOD出现之初。人们希望能够针对大众喜爱的电视节目内容提供时移电视,这样人们就可以在家里非常舒服地在方便的时候观看电影或电视节目。基本的思想是将内容存储在存储器中同时发展分发网络提供接入并投递这些视频内容。最初业务的推动者来自广播电视业务提供者和电影制片者。但遗憾的是由于在当时的技术条件下(当时期望的承载网络是基于ATM技术的宽带ISDN)所需要的基础设施费用相对于VOD业务的需求显得太高了一些。这样VOD在一段时间内发展缓慢,除了在一些局域网络上开放了一些VOD业务外,大多数的VOD停留在研究和试验层面。同时Web业务的出现,给人们带来了使用Web业务获得文本信息的喜悦。
随着数字摄像机的出现、存储系统能力的增强、网络传输带宽的增加以及移动电话终端能力的增强,对网络视频信息的传输又一次成为人们关注的热点问题之一。与20世纪90年代的VOD的不同点在于网络视频的承载网络是IP网络,而用户的显示终端也扩展到包括电视终端、计算机、移动手机等。提供视频的方式也由广播电视的纯“推”的方式扩展到包括原有电视的“推”方式和VOD的“拉”方式。用户可以根据自己的意愿获取节目信息。也就是说IPTV将以类似于Web业务向用户提供文本信息一样向用户提供视频信息。
虽然IPTV主要是向用户提供视频信息,但由于IPTV业务的业务形式和用户终端种类的增加,使得业务提供者不能仅采用单一的信息源同时向数量众多、终端能力各异的用户提供业务。本文将介绍IPTV业务中进行视频内容分发的一种技术——代理缓存技术。
2、IPTV业务服务质量要求
由于视频节目内容的信息量较大、若采用下载后播放的方式,用户在下载全部节目信息时需要花费较长的时间,为此在提供业务时不能使用下载后播放的方式而应采用类似于现有广播电视播放的方式,也就是说在下载的同时进行播放,从用户的角度看就是边下载边播放。IPTV业务主要提供媒体直播(广播)业务和媒体信息点播业务。对于直播方式要求视频流在播放时不能出现中断,同时播放时允许用户在多个节目中进行切换,切换时间要在相对短的时间范围内。而对于点播方式的业务要求用户可以找到所希望观看的节目同时可以对观看的节目进行适当的控制(包括快进、快退、暂停等),同时要求播放的视频节目信息流畅没有明显的中断。
就目前视频编码技术的发展现状,实现用户在线实时播放视频节目信息所需的网络传输带宽通常在每秒兆比特数量级。IPTV业务主要以提供双向不对称的视频信息为主。用户和业务提供者之间主要是客户端/服务器方式进行通信。这样若多个用户同时观看存储在一个视频存储器中的视频节目信息对存储服务器的输入输出具有较高的要求,同时通信网络的带宽要求也较高。为此,对于IPTV业务通常采用类似目前CDN的技术将视频节目信息缓存到接近用户的边缘设施,以减小主视频存储服务器和通信网络的压力。但视频信息通常比文本信息的信息量大,若将全部的视频信息均缓存到边缘存储设备中会造成存储设施的浪费,同时由于用户采用具有不同能力的终端,要求业务提供者提供传输速率不同的视频信息。这样采用代理缓存技术成为解决Internet上媒体流传输的一个重要手段。
3、代理缓存技术简介
3.1 媒体流代理缓存辅助的系统结构
图1为采用代理方式进行媒体流投递的系统示意图。在该系统中,媒体流采用RTP/RTCP/RTSP进行投递。
采用代理缓存的基本思想是用户(客户端)的控制信息和媒体投递信息在传输时采用两个不同的信道来进行。媒体流服务器根据控制信息的指令向用户(客户端)传递媒体信息。用户将其控制信息上传到媒体代理,若媒体代理的缓存器中存储有用户所要的媒体内容,则代理直接将其缓存器中存储的信息投递给用户(客户端)的缓存空间,缓存空间接收到媒体信息后将其传递给播放器用于播放。若缓存代理的缓存器中没有用户要求的信息,则发送指令给服务器请求传递相应的媒体信息。根据缓存代理的不同策略,服务器将媒体信息直接传输到代理的交换器或存储到缓存代理的缓存器中,由缓存器将媒体流信息再通过交换器传送给用户。
图1 采用代理方式进行媒体流投递的系统示意图
3.2 缓存代理技术
从缓存代理技术本身来讲,是将媒体信息缓存在缓存代理处,然后将其传送给用户。但由于视频媒体信息本身信息量大的特点,若缓存代理作为服务器的备份,那么对缓存代理的要求将太高,势必增大业务提供者的成本。同时由于不同的节目内容用户的点击率并不相同,为此将所有的媒体内容采用相同的方式进行缓存没有必要。因而目前采用的代理缓存通常采用对热播的内容采用全部存储,而对点播量不大的媒体内容采用部分缓存的方式进行。但如何确定需要缓存什么、缓存多长时间的算法就成了研究者研究和讨论的一个问题。现有的缓存算法主要包括用于同质客户端的代理缓存和用于不同质客户端的代理缓存。
3.3 用于同质客户端的代理缓存
目前大多数代理缓存技术适用于在代理之后具有相同或类似配置和能力的同质客户端。这样同一版本的媒体信息可以满足所有同质客户端对相同内容请求,同时对客户端连接到网络的带宽以及客户端的播放能力具有相同的要求。即使是这样,在代理缓存中存储一个节目内容的哪些部分以及如何管理代理缓存中已经存储的信息(如何放置以及如何替换所存的信息)仍然是具有挑战性的问题。不同算法会带来不同服务质量以及代理资源的不同消耗。本文主要介绍目前研究较多的4类代理缓存算法:可变时间间隔缓存、前缀缓存、分段缓存以及变速缓存。
3.3.1 可变时间间隔缓存
可变时间间隔缓存算法采用缓存可变时间间隔的媒体信息以用于连续地接入流媒体。该算法的实现方式如下:当两个客户端在一段时间间隔内向同一个代理缓存器请求同一个媒体内容时,根据第一个客户端的请求,代理缓存器向媒体服务器请求发送媒体信息并将接收到的媒体信息发送给第一个请求者,同时将媒体信息存储在代理缓存器中,在第二个客户端的请求到来时,代理缓存器就可以将已经存储在缓存器中的媒体信息直接发送给第二个请求者,待媒体信息发送给第二个请求者后代理缓存器释放该媒体信息。这样媒体服务器只需要通过骨干网络将媒体信息传送一次便可以服务于两个客户端。从而节省了骨干网络带宽,同时减少了第二个请求者开始的等待时间,提高了服务质量。当多个客户端在一定的时间间隔内请求同一个媒体信息时,就可以将媒体信息从媒体服务器中请求一次然后存储在代理缓存器中,根据后续请求者的请求发送给相应的请求者,在媒体信息发送给最后一个请求者时释放媒体信息。这样仅在第一个客户端请求媒体信息时需要代理缓存器从媒体服务器中请求传送媒体信息,后续的客户端仅需从代理缓存器中获得媒体信息便可。根据请求同一媒体信息的第一个客户端到最后一个客户端请求的时间间隔不同,需要将媒体信息在代理缓存器中对媒体信息保留不同的时间间隔,当该间隔与整个节目的播放时间相同时,在代理缓存器中就保留了请求节目的全部信息。在一个节目热播期间通常需要在代理缓存器中存储热播节目的全部信息。
3.3.2 前缀缓存
在上一种算法中,主要是减少对骨干网络的传输带宽的压力,同时提高后续请求者的初始播放速度。但第一个请求者的起始播放时间并没有减少,若在没有用户请求之前将每一个节目的开始部分存储在代理缓存器中,在第一个客户端请求媒体信息时也可以提高其起始速度,同时代理缓存器向每一个媒体服务器请求后续部分内容。这便是前缀缓存算法的基本思想。
在采用前缀缓存算法时一个需要考虑的问题是最初在代理缓存器中应当缓存多长一段节目内容。考虑到,客户端需要平滑地播放媒体内容,代理缓存器中至少要存储从代理服务器到媒体服务器处接收到后续媒体信息的一段时间内足够客户端播放的信息。在代理缓存器的存储空间比较富裕的情况下,可以尽可能将前缀信息存储的相对长一些。
3.3.3 分段缓存
前缀缓存算法主要解决起始响应速度问题,在其中隐含了一个媒体信息分段问题。前缀本身就意味着将媒体信息分成了不同的段信息。在代理缓存器从媒体服务器后续请求过程中也需要根据媒体信息的特征分段请求或发送。特别是针对点播类业务,客户端需要快进、快退等操作,这意味着需要在媒体信息中在分段处有标注信息。这也要求将媒体信息本身进行分段。
分段缓存算法是目前学术界研究较多的一种算法,根据不同的用途分段缓存算法又分为指数级分段和“慢分段”,指数级分段是根据内容信息距起始点距离的不同将信息分成不同长度的段,距起始点越远段落的长度越大,这主要是用于代理缓存器快速调整所缓存的内容,在需要的时候可以丢弃大块的媒体信息内容。“慢分段”其基本思想是尽可能晚地对媒体信息进行分段,而要等到收集到了尽可能多的统计信息再对媒体信息进行分段,这样可以最好地降低对带宽的要求,提高服务质量。
分段缓存的最大好处在于可以进行可变比特率传输,为此也有提出根据内容提供者的意见将内容信息中最为精彩的片段取出来进行分段,并在客户端最初观看内容时为其提供这些精彩片段,然后由用户确定是否继续观看所选择的内容或者是直接跳转到其认为最为好看的部分内容。
3.3.4 分速率缓存
上面三种算法均是根据时间顺序进行缓存以减少对网络带宽的压力,没有考虑到媒体信息编码后不同时间上信息量的不同从而带来的网络传输带宽需求的变化。分速率缓存算法的基本思想是,将从时间轴上看不同时间段上不同速率的信息,在媒体服务器中存储等速率的部分信息,而在代理缓存器中存储变化速率的部分信息。这样在代理缓存器与媒体服务器之间将采用等速率传输媒体信息,代理缓存器将接收到的等速媒体信息与已经缓存在代理缓存器中变速率部分的媒体信息组合起来发送给客户端,以满足播放器连续播放的要求。
3.4 用于不同质客户端的代理缓存
3.3中所介绍的代理缓存主要适用于可以接收相同速率并可以使用相同格式的客户端。IPTV业务可以向采用不同的接入网络接入并具有不同设备配置的客户端提供业务。在这种情况下,为满足不同能力客户端的需要,媒体服务器需要存储采用不同格式适用于网络速率的同一内容的多种备份,这样耗费了大量的存储和网络资源。为解决该问题,分层编码方式应运而生。这种算法是将媒体信息按层进行编码,将具有重要信息的层编码存储在代理缓存器中,将其他层信息存储在媒体服务器中。对于要求速率低的客户端,代理缓存器直接将所存储的信息发送过去就可以满足其需要,而对于要求速率高的客户端,代理缓存器可以先将所存储的信息发送到客户端,同时向媒体服务器请求其他层的信息再转发给客户端,以满足客户端对信息速率和信息格式的要求。目前通常是将媒体信息分为2~3层。最优的分层方式还在研究之中。
通常可适用于速率范围较大的编码速率,如MPEG-4多采用分层编码算法。其最大的优点就是对传输速率和显示格式有不同要求的客户端,采用不同层信息的不同组合,从而节省存储空间和传输带宽。
3.5 重叠网络上的代理缓存
目前的Internet运营商多苦于类似BT一类的视频下载软件在网络上的使用。多对一的视频信息的传输消耗了网络的大量资源,造成了网络拥塞。据有关统计,目前BT下载信息在Internet上的全部信息量中占有很大的比例。从实现机理上来讲采用peer to peer的方式进行视频信息传递也是一种代理缓存,在peer to peer环境中,每一个客户端即是服务器也是客户端。而从代理缓存的角度,由于客户端所存储的信息是来自于同一个媒体服务器,在这种意义上讲每一个客户端起到代理缓存器的作用。
peer to peer环境通常是一个松耦合的环境,每一个客户端均可能在不通知其他客户端的情况下离开或者禁止其他客户端访问。这样势必会影响业务的服务质量,若是将peer to peer配置在第二层代理缓存,而第一层代理缓存采用由业务提供商配置固定的代理缓存器来完成,这样一方面可以提高业务的服务质量,一方面可以节省业务提供者代理缓存器的资源。
4、结束语
IPTV业务是目前业界的一个热点问题,虽然IP网络目前的传输带宽已经达到一定的程度并且有能力传输像视频信息一类对传输带宽要求较高的信息。但是在提供以单播形式为主的点播类视频业务时如何投递视频信息以满足用户的需要仍然是一个很大的挑战。代理缓存技术在Web业务采用的CDN上已经有很多的应用。但与文本信息相比,点播类视频业务本身信息量大、传输带宽要求高、交互性要求高的特点不能将用于Web业务的代理缓存技术简单地应用于视频点播业务。而需要采用特定的算法来实现节省存储器和传输资源的目的。本文中简单介绍了目前正在使用或处于研究阶段的代理缓存算法。这些算法通常是针对某种特定场合而设计的,它们之间没有排斥性,通常具有互补性,在具体使用中可以同时采用,也可以针对不同的应用环境采用部分算法。目前已经商用的代理缓存通常采用相对简单的算法以满足实现简单的目的。代理缓存算法仍处于发展之中,这些技术的顺利进展并在IPTV业务中应用将有利于IPTV业务的健康发展。