多媒体点播系统概述
----ixJet Streaming VOD System
前言
Intranet和Internet技术的发展、以及基于Server/Client、Web/Browser技术的发展改变了信息基础设施的结构,这包括信息的生成、存储、传送和表现形式。目前,传统的数据格式例如文本、图形或图像、以及极窄带的音视信号已被数字化,可通过网络存储、传送和再现;但是,依赖传统信息格式并不能充分满足当今社会对高质量、连续多媒体如高保真音频和电视质量视频的应用要求。
这些应用覆盖着各行业广泛的领域,如公司培训、远程教学、书报亭、广告亭、卡拉OK、其它视频点播等等。把连续媒体引入信息基础建设中,对计算机开发这带来新的挑战----因为连续媒体中存在其固有属性,包括大容量的数据卷组和连续播放的要求。它需要转换到大容量存储器中,需要宽带网络环境,最重要的是必须能够实时传输。传统的手段不可能满足严格的定时和容量要求,特别是在文件系统和I/O处理部分。
针对传送连续媒体的需求产生了许多解决方法:其中一些使用专用的硬件平台或昂贵的超级计算机作为多媒体服务器;依赖硬件的解决方法会给今后的扩展、升级和维护带来问题,且代价沉重。另一些采用低带宽连接,传送低质量、小屏幕的视频内容,例如你偶尔拨号上网收看一些\节目\,这种方法只能局限在某些应用,无法保证更高质量的视频点播(VOD)。
ixJet Streaming VOD System就是在这种呼唤下应运而生的,它提供了一种经济有效的解决方法来适应多媒体内容的传送。它的设计遵循以下四个原则:(1)使用现在流行的基于Windows NT的PC技术,以及Client/Server、Web/Browser技术。(2)所有硬件和软件采用开放式标准。(3)支持跨平台。(4)传送高质量的视频内容。
视频服务器
视频服务器的工作过程如下:用户在客户端启动播放请求,这个请求通过网络发出,到达并由服务器的网卡接收,传送给服务器。经过请求验证后,服务器把存储子系统中可访问的节目名准备好,使用户可以浏览到所喜爱的节目单。用户选择节目后,服务器从存储子系统中取出节目内容,并传送到客户端播放。系统整体设计目的是:经过网络通道对视频传输,使用户接收并播放平滑、连续的视频。通常,一个\回放连接\被定义为一个\回放流\(本文称为\流\)。可支持流的数量是衡量视频服务器能力的一个重要指标。影响服务器性能的因素有很多,其中两个重要因素是:存储子系统和视频传输机制。存储子系统决定了存储设备怎样快速地提供视频数据,而视频传输机制决定了怎样有效地通过网络传输视频。
ixJet Streaming Server运行于Windows NT环境下,它能够把多种符合工业标准的多媒体格式传输到连接在宽带网络上的客户端,支持的多媒体格式有:MPEG-1、MPEG-2、AVI、Quick Time。多媒体内容以原有格式存储,不需要额外的转换。而其它公司一些产品往往需要把标准MPEG格式转换为其专有格式,这种转换带来额外开销,这对于要求实时传输的
动态馈入程序会造成一些问题。
ixJet Streaming Server基于\软件解决思想\,对硬件没有特殊要求。服务器可以支持IDE或SCSI接口的硬盘;这意味着对小规模视频流的需求,可以使用廉价的IDE接口硬盘。
现在已经可以做到,在使用一块SCSI接口的视频硬盘时,一台服务器可以支持高达50个MPEG-1\并发流\;通过增加额外的SCSI通道和硬盘驱动器,一台服务器可以支持高达100个\并发流\。而且在点播时,上述两种配置的启动延迟都小于2秒钟。
存储子系统:容量与结构
有两个因素涉及到视频服务器的存储子系统设计:存储容量和访问容量。对于前者,它的意思是存储设备全部可利用的存储空间对于后者,存储访问能力是指是指存储设备所提供的访问能力。正如上面提到的,要保证平滑的视频回放,服务器需要从存储子系统中取得视频资料,并且满足视频回放率的要求。因此根据一台服务器计划支持多少个\流\的数量,可以对相应的存储子系统进行伸缩调节。具有优良管理能力的存子系统设计,成为提供视频传输服务的一项重要组成。
除了容量因素以外,还有一个重要的因素要考虑:存储结构。众所周知,把全部视频内容都存储到计算机内存上绝对不是经济的办法,尽管内存提供了高速的访问能力(在纳秒级),但成本太高了,会使多媒体技术难以推广。有一种选择就是按照和当前计算机系统类似的层次体系结构组织存储设备。层次体系存储子系统的主要构想是只使用少量的、昂贵的高速缓存存储频繁(当前)使用的视频内容,利用大量的、价格便宜的存储设备(例如硬盘)保存视频内容。总体来说,这种体系结构是最经济的手段。如何利用视频服务器的层次存储体系结构,将影响到整个系统的价格和性能。
三级存储层次体系结构:
从第三级设备(CD-ROM和/或光磁Jukebox)、到第二级设备硬盘驱动器、到第一级物理主存储器。为了克服由单个硬盘驱动器所限制的访问能力(即:对于存储于一个硬盘驱动器的任何视频内容,可访问的特定视频内容的\流\的最大数量受视频内容硬盘驱动器能力的限制),ixJet支持以\基带条\(Striping)的形式把视频内容分布式存储在多个硬盘上,从而利用全部的硬盘驱动器提升对视频内容的访问能力。任何基于硬件的、支持Windows NT的RAID(廉价硬盘冗余阵列)系统,都可以加入到ixJet中。而且,这种内部为基带条的、基于软件的解决方案也非常适合那些对价格敏感的顾客。
采用RAID控制器的硬件解决方案将增加整个系统的成本,尽管ixJet支持这种选择。这种技术把RAID作为底层存储设备,用RAID控制器同时连接多个磁盘设备,达到站在应用的角度逻辑地把它们看作是单个硬盘。在访问时,某个视频流请求所需的数据可能由RAID系统的多个物理磁盘提供,但从外界看来,它可以为数据访问增加了许多倍的磁盘带宽。
上面已经提到,ixJet支持内置的、基于软件的磁盘\基带条\能力,磁盘\基带条\机制把多个物理硬盘驱动器组成一套逻辑磁盘驱动器。换句话说,这种机制把数据\条状\地分布在
多块硬盘上面。在任何时候,对外界是把数据存储在一块逻辑磁盘上,但这个逻辑磁盘会利用所有硬盘驱动器带宽的总和传输数据。但ixJet解决方案的\基带条\机制和微软公司Windows NT的\基带条\机制有所不同,ixJet把视频硬盘格式化成自己的格式。微软Windows NT的\基带条\机制是\不可见的\(其技术是不开放的),因此应用程序不能利用它的优势,同时也为NT文件系统带来开销;另外,尽管ixJet Server基于Windows NT,但因为在实时传输服务中的\实时\限制,Windows NT 的FAT文件分区和NTFS分区都不可能满足严格的\实时\要求。而ixJet磁盘\基带条\机制能够识别\基带条\配置,能够直接访问硬盘设备,充分发挥它的效能。
提供CD-ROM和光磁(MO)Jukebox档案设备存储能力是ixJet的重要特性,它被证明是一种经济有效的方案。它服务于两个目的:第一,是把不经常点播的多媒体内容存储到低速存储设备中,为频繁点播的多媒体内容留出宝贵的磁盘空间和带宽。第二,对于音像制作和电影发行行业,因为他们使用CD-ROM和DVD-ROM发布资料,所以用光磁(MO)或CD-ROM Jukebox进行归档是十分自然的。尽管这些是ixJet的内在功能,但它是可选的。这种对第三级存储设备的内置支持,给用户的调整、应变和规模变化带来了极大便利,也意味着最大限度帮助用户考虑节省投资。
视频传输机制:解释\下载\与\流\
视频传输服务涉及到连接至网络的两个以上的用户。它要求服务器把视频内容发送给客户端播放。目前,有两个通用的传输方案供使用:\下载\和\流\。\下载\机制的意思是:通过网络传输整个视频文件,把它存储到客户端的存储设备中。在全部内容到达客户端以前,不能开始视频播放。采用\下载\方法视频传输机制,用户必须考虑两个因素:播放启动延时和客户端存储需求。后者表示在播放之前,客户端用于高速缓存视频内容的主存容量;前一个因素是指从选择到显示视频内容的时刻所经过的时间。\下载\机制能够较好地满足一些低质量和时间短的视频片段点播应用。但对于(象VOD、公司培训)远距离教学等)要求播放启动延迟时间短和视频质量高的应用,\下载\过于简单而不能工作。例如,传送10分钟长的MPEG-1编码(要求1.5Mbps网络带宽)视频片段,通过流行的10Base-T以太网连接,它的播放启动延迟时间大约1.5分钟(假定整个以太网带宽可以全部分配和利用时),同时要求大约110MB的客户端空余存储空间。这个情况在更高质量的视频(例如MPEG-2视频编码)或长时间的视频(如100分钟的电影)将使品质变坏。
ixJet采用的\流\机制解决了这个问题:一旦客户端可利用的数据量足够大时,就允许客户启动播放所选择的视频文件。这表示客户端可以在无需等待所有数据都到达之前就能够进行播放。
根据具体的实践,启动延时范围可能从几秒到几十秒。通过释放已经播放的内容,\流\可以重新利用空出的高速缓存空间,来存放以后仍未播放的内容。它解决了\下载\机制中的那种简单方法所遇到的长时间启动延时和对大容量缓存空间需求的问题。多种现有的多媒体传输产品如Microsoft NetShow、Real Plater都使用\流\的技术(但他们主要应用于Internet的窄带传输,而不是象ixJet用于高质量的宽带传输)。
一般的\流\技术也有它的短处,简单的\流\不提供任何流量控制。例如,如果服务器一
多媒体点播系统概述
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)