1 前言 2 广电行业的VOD业务现状 VOD业务即视频点播业务,是一种可以按用户需要点播节目的互动式视频业务。它的一个重要特点就是需要很高的带宽来传送下行的媒体流。广电的CATV网络可以提供非常高的下行带宽,适于媒体流的传送。因此,广电行业的VOD业务提供多采用基于IPQAM的VOD解决方案,即利用IP网络实现流媒体的控制,通过CATV网络下发媒体流的方式。图1就是一个简单的IPQAM VOD业务系统的逻辑图。 目前,基于IPQAM的VOD解决方案的相关规范主要有时代华纳提出的ISA(Interactive Services Architecture)和Comcast提出的NGOD (Next Generation On Demand)等。其中ISA架构的流控协议采用基于ISO/IEC DSM-CC标准的SSP和LSCP协议,而前端服务器实体之间采用CORBA实现,实现的复杂性相对较高。NGOD则是在RTSP协议的基础上提出,实体交互基于Web Service实现,目前还很少有相关的商用产品。 3 基于开源项目的VOD低成本解决方案 目前,与视频服务器相关的开源项目有很多,如MPEG4IP,VLS等等。其中live555是免费,开源的,并支持TS流,但live555的设计并不适用于商业运营;DarwinStreaming Server2具备商业运营必须的认证、计费、远程管理等特性,可以很好地支持商业运营,但是对于广电系统的应用来说,缺乏对TS流的支持。本文基于可运营性的考虑,选取Darwin Streaming Server作为基础,通过扩展使之支持MPEG-2TS流,实现低成本的视频服务器,以支持基于IPQAM的VOD解决方案。 3.1 DarWin Streaming Server简介 Darwin Streaming Server(简称DSS)是苹果公司的开源视频服务器版本,与DSS相对应,APPLE有一个商业版本的视频服务器QTSS(QuickTime Streaming Server),两者采用相同的核心设计。DSS符合ISMA规范,支持多种标准协议和格式,DSS的主要特性如下: 完全符合标准,支持各种标准的播放器或者机顶盒。 支持MP4、3GPP等文件格式; 支持MPEG-4、H.264等视频编解码格式; 支持RTSP流控协议,支持HTTP协议; 支持RTP流媒体传输协议; 支持单播和组播; 具有完备的日志功能。 见图2即DSS系统的逻辑框图。 3.2 DSS模块的编写 每个DSS模块必须实现两个函数:一个是Main函数,服务器在启动时将调用这个函数进行必要的初始化。另一个是Dispatch函数,通过实现此函数,服务器可调用DSS模块并完成特定处理。对于编译到服务器里面的模块,其主函数的地址必须传递到服务器的模块Main函数中。具体实现细节可参照 QuickTime流媒体服务器模块文档[2]的相关章节。 具体实现时,Main函数必须命名为MyModule_Main,其中MyModule是模块的文件名。此函数的实现通常如下所示: 每个DSS模块都必须提供一个Dispatch函数。服务器为了特定的目的需要使用某个模块时,是通过调用该模块的Dispatch函数来实现的,调用时必须将任务的名称及相应的参数传递给该函数。在DSS中,使用角色(Role)这个术语来描述特定的任务。Dispatch函数的格式如下所示: void MyModuleDispatch(QTSS_Role inRole,QTSS_RoleParamPtr inParams); 其中MyModuleDispatch是Dispatch函数的名称;MyModule是模块的文件名;inRole是角色的名称,只有注册了该角色的模块才会被调用;inParams则是一个结构体,可用于传递相应的参数。 3.3 DSS对MPEG-2 TS流的支持 对DSS进行扩展,以实现对MPEG-2 TS流的支持,主要涉及三个方面的问题:首先,RTSP协议需要支持MPEG-2 TS over DVB-C;其次,能够通过UDP协议直接发送TS流;最后,发送的速率需要依据PCR[1](Program ClockReference,即节目时钟参考)实现适当的调节。下面针对这三个方面问题的解决进行简要的说明: 为了让RTSP协议能支持QAM传输,需要对标准的RTSP协议做扩展,即在SETUP阶段,终端告诉服务器需要QAM传输,服务器会为该终端分配传输资源,并告诉终端相应的参数(包括频点和节目号等)。对于IPQAM资源,节目号与UDP端口号是一一对应的,视频服务器可以维护一个包括UDP端口、节目号、频点以及UDP端口使用状况的列表。 当使用扩展后的RTSP协议实现一次MPEG-2 TS流点播时,与通常的RTSP交互过程相比,在SETUP阶段有所不同。 为了实现MPEG-2 TS流通过Cable下发,关键点是视频服务器能够采用UDP协议将TS流依特定速率发送到IPQAM设备。 采用UDP协议把TS包发送到IPQAM设备,实现相对比较简单,假定TS包的大小是188字节的,只要遵照一个UDP包不应大于以太网最大传输单元的原则,将7个TS包打包成一个UDP包,发送给IPQAM设备即可实现。 而依特定的速率发送则要求服务器在发送MPEG-2TS流时,必须保证发送数据的速率与媒体正常播放的速率一致性。考虑到终端会有一个缓冲区来平滑发送数据时可能产生的波动,因此对于发送速率与正常播放速率的一致性的要求并不是绝对的。但发送数据带来的波动要在IPQAM设备许可的范围内,否则 IPQAM无法正常处理。 本文中依特定速率发送是基于PCR来实现的。PCR即节目时钟参考,是TS包中的一个字段,用于同步解码器与前端编码器或者视频服务器的时钟。在编码器进行编码的过程中,会不断读取硬件时钟并放入TS中PCR字段。解码器在解码的过程中会参照一个本地时钟,确定解码和显示的速度。本地时钟要根据PCR进行修正,以避免时钟过快造成停帧或者时钟过慢造成丢帧。 4 结束语 |