Windows媒体技术流式系统的组建
流媒体世界| 2002-12-02

                         

     利用Windows媒体技术(Windows Media Technologies,WMT)流化高比特率和高帧数视频内容,要求你特别注意包装流式系统的平台的处理能力和配置,以及源内容的质量。尽管这个操作与流化低比特率和低帧数内容相似,在高比特率和高帧数时有两点不同,这两点将会影响流化视频内容。在高比特率和高帧数下进行视频流化,能产生更高质量的语音和视频内容。在产生高比特率和高帧数视频之前,必须了解系统的组件和系统要求的能力。



 一、认识流式系统的组件

 1、WMT设计说明书

 WMT是设计用来流化带宽范围从28kbps到3.5Mbps的内容的。WTM也支持帧数从8fps到30fps的内容的流化。如果你的计算机对目标比特率或帧数来说不够强大,那么你将不会得到满意的结果。这表现在:声音和图像不同步,帧数比预想的低,或客户端内容频繁的重新装载。

 2、编码平台

 编码平台负责捕捉,压缩实时的或已被存储的音频和视频内容,并把它格式化为Advanced Streaming Format (ASF)。一个ASF流 能在指定的目标比特率下产生或超出几个比特的水平下产生。一旦编码成功,ASF内容能够被直接发送到服务器进行流化或以一个.asf 文件保存起来以备以后使用。

 3、服务器平台。

 服务器平台处理客户端计算机内容的存储和传输。

 4、客户端计算机。

 客户端计算机接收,解压缩,并播放内容。当传输实时内容时,视频和音频内容被编码并直接发送给服务器。然后服务器将内容发送给一个或多个客户端。如果编码器不够快,跟不上数据的到来速度,就会丢失一些视频帧。作为一种解决办法,可以在"offline"模式下使用编码器。这里,处理过程和实时情况下不同,因为它压缩的是先被捕捉为一个.avi文件的数据。这个.avi文件能够被编码到一个.asf文件中,然后存储到服务器上再传输。在这种方法中,编码器的性能不是非常关键,因为它永远不会"落后"。



 二、设计你的流式系统

 为了确保得到最高质量的结果,你必须为高比特率和高帧数内容设计你的流式系统。内容的编码,解码,存储给整个系统的组件带来了沉重的负担。这个负担并不是均匀分布于整个系统的,而是主要集中在编码平台上。接下来是客户端计算机,它要解压缩和显示更多的数据。对服务器平台的影响是最小的,尽管它也可能在高比特率和高帧数下处理大量随选流时被加重。

 1、编码器 

 编码器给CPU带来的负担因源的不同而不同。如果正在压缩的是先前捕捉的数据,例如一个.avi文件,那么系统的能力就没有编码实时数据时那样关键。然而,如果你计划要编码实时视频,那么使用一个能跟得上高帧数/和比特率的系统就很关键了。快速移动的图像比简单的讲话的头部需要的处理能力要大得多。

 下面的配置已经证明能在比特率超过3.5Mbps30fps下很好的完成。

 在450MHz或更高的双Pentium ||处理器或Xeon处理器

 128MB内存。

 Microsoft Windows NT Workstation version 4.0 with Service Pack 4.0. 

 高质量高性能的基于PCI的捕捉卡,例如MMAC's Ospey 100。

   (注意:推荐使用一个基于PCI的捕捉卡。因为无论多少个CPU时钟周期都不能补偿基于ISA的设备的慢特性。)

 高质量的音频捕捉卡。

 (注意:为了测试CPU的能力,运行编码器为一段高速动作编码。如果帧数能保持一致,那么系统已经足够快来完成这一工作。一个慢系统的特征是如果图像是静态的,它能保持目标帧数,而当有快速动作时就会丢失大量的帧。一般的CPU监测工具如微软性能监视器(Microsoft Performance Monitor),不能精确地测量编码器的CPU负荷,因为他们不能显示只持续几毫秒的CPU峰值。当在视频中有一个高速动作时,CUP负荷可能过载仅一个帧的时间(在30fps时是33毫秒),导致一个视频帧的丢失。这样的峰无法用一个显示过去一段时间内CPU平均使用情况的性能监测器来观察。)

 2、音频捕捉卡

 尽管音频捕捉卡的效率已经不是一个问题(基于ISA和PCI的设备都能工作得很好),但这一子系统中组件质量的好坏将会导致最后结果的巨大差别。价格便宜的音频设备往往产生和视频同步性很差的音频,特别是在经过很长的时间间隔后。他们往往在某一采样率下效果很差。现在固化到母板上的廉价音频设备一般效果也很差。我们强烈推荐你购买一个更高终端产品(例如,SoundBlaster AWE64 Gold or SB Live)或专业设备(如Antex Studio Card)。

 3、内存

 虽然大多数人会愿意为这样的高终端系统增加更多的内存,但这对根本上是受CPU束缚的编码过程没有多大帮助。因此,如果你不想用你的编码平台做其他工作(例如视频编辑),我们建议你不要购买超过128MB的内存。

 4、Mcirsoft Windows NT

 如果你打算用Microsoft? Windows NT? Server代替Windows NT Workstation,我们强烈建议你改变系统设置减少用于高速缓存文件的内存。否则,Windows NT Server会以 Windows Media Encoder为代价扩展文件高速缓存。结果造成编码器不能"翻页",在从音频设备捕捉数据时落后。对这一属性的设置可以按如下顺序找到(start > settings > control panel > network > services). 

 5、编码过程

 对高比特率内容编码和在较低数据率下编码没有多大的差别。唯一棘手的工作是产生或利用一个自定义的模板以指示编码器在30fps(或胶卷的24格)下压缩源数据并设置音频和视频的比特率。如果不想创建自己的模板,你可以先从http://www.microsoft.com/windows/windowsmedia/techshowcase/hbv/asd/asdtemplates.zip,下载一个模板,然后通过属性页修改这个模板以满足你的需要。下面显示了高帧数和高带宽模板:

 1) 3MB模板

 这个模板设定编码器为3Mbps,320x240像素,30fps。音频编码器是Voxware Music编码器,设定为32kbps(采样率是16KHz)下的立体声编码。

 2) 2MB模板

 这个模板设定编码器为2Mfps,320x240像素,30fps。音频编码器是Voxware Music 编码器,设定为32Kbps(采样率为16KHz) 下的立体声编码。

 3)1MB模板

 这个模板设定编码器为1Mfps,320x240像素,30fps。音频编码编码器是Voxware Music 编码器,设定为20Kbps(采样率为11KHz) 下的立体声编码。

 4)512kb模板

 这个模板设定编码器为512Kbps,320x240像素,30fps。音频编码编码器是Voxware Music 编码器,设定为20Kbps(采样率为11KHz) 下的立体声编码。这一模板比包含在Microsoft NetShow Encoder version 3.0中的模板要高级,因为它能在标准15fps的模板上以很小的质量损失提供30fps。为了减少客户端的CPU需求,你可以把音频编码器的设置改为mono。

 5)300 KB模板

 这个模板设定编码器为300Kbps,320x240像素,30fps。音频编码编码器是Voxware Music 编码器,设定为20Kbps(采样率为11KHz) 下的立体声编码。这一模板比包含在NetShow 3.0 Encoder release中的模板要高级,因为它能在标准15fps的模板上以很小的质量损失提供30fps。为了减少客户端的CPU需求,你可以把音频编码器的设置改为mono。

 6)100 KB 模板

 这个模板设定编码器为100Kbps,320x240像素,30fps。音频编码编码器是Voxware Music 编码器,设定为10Kbps(采样率为11KHz) 下的mono编码。这一模板比包含在NetShow 3.0 Encoder release中的模板要高级,因为它能在标准15fps的模板上以很小的质量损失提供30fps。

 7)50 KB模板

 这个模板为标准单通道ISDN 线路,设定Windows Media Encoder为50Kbps,176x144,30fps。音频编码器是Voxware Music 编码器,设定为8Kbps(采样率为8KHz) 下的mono编码。这个模板使用比包含在NetShow 3.0 Encoder中的模板更小的图象(176x144对240x176),但是它能获得更高的帧数。更快的帧数会能更好地表现媒体动作对象。通过提供一个和流畅自然的动作精确同步的唇部动作,这一设置也能很好地用于talking-head内容。注意,这是一个具有伸缩性的模板,它允许在网络拥塞时有一些表达质量的损失。

 8)22 KB模板

 这个模板为标准28kbps模拟调制解调器线路,设定编码器为22Kbps,160x130,30fps。音频编码器是Voxware Music编码器,设定为6kbps(采样率为8KHz)下的mono 编码。这个模板使用比包含在NetShow 3.0 Encoder中的模板更小的图象(160x120对176x144)。然而,它能获得更高的 帧数,和一个允许提高媒体运动对象表现力的特性。不过,视频质量比标准28.8Kbps模板要低得多。因此,在使用它之前要和标准模板比较一下。(注意,这是一个可升级的模板,它如许在网络拥塞时优雅地降低质量。)

 避免为流的音频部分选择太高的数据率,因为这会增加系统的编码和解码需求。如果音频数据率设置得太高会导致音频和视频的同步问题。为了改变自定义设置的音频数据率,终止编码并打开设置的属性页。在压缩标签上,将音频数据率改为一个较低的设置,然后重新开始编码过程。并将你的新配置设置保存到一个新的.asd编码器配置文件中。

 6、服务器

 服务器平台的配置要求依赖于内容是被实时流化还是有需要时才流化而不同。特别地,如果服务器平台要流化on-demand内容,你必须要有一个高性能的磁盘子系统。当流化实时内容时,磁盘子系统的性能就不是很重要了。还要注意一个服务器能流化大约50到70Mbps(通过一个100MB的网卡)。如果你一定要超过这一限制,你必须使用一组服务器并带有某种负载均衡软件。下面的配置已经被证明能很好地流化随选的高比特率和高帧数的内容。

 Pentium II 300 MHz or more. 

 128 MB of memory. 

 100-megabit PCI Ethernet card.

 Windows NT Server with Service Pack 4.

 A single disk driver for live streaming. 

 A RAID or striped disk subsystem of three or more high-performance SCSI drives for on-demand streaming. 

 从服务器的角度来看,处理高数据率和处理低数据率没有什么区别。但从性能的角度来看,处理几个高比特率片段比处理几百个低 数据率片段需要更少的CPU周期。所以,高比特率内容通常看起来要好一些。

 Microsoft、Windows、Media Services有大量的性能计数器,你可以在Microsoft Performance Monitor中追踪这些计数器。如果你正在处理随选内容,要特别注意下面每个计数器的值:

 u Late Reads计数器记录每秒完成的近期读取数的增量。

 近期读取是一个花费时间比预计多得多的磁盘读取操作。最理想的情况下,这个记数器保持0值。当服务器的负载很大时,这个值就会大于0。如果这个值经常大于0,那么系统可能没有被正确地配置或其他应用程序正在和Windows Media server组件竞争磁盘的使用权。当这个计数器显示非零值时,它表示磁盘子系统已经落后,你的流内容的质量可能会遭受损坏。

 u Pending Connectongs计数器显示试图连接服务器但还没有连接成功的客户数。

 当服务器在最大能力附近运行,不能及时处理大量连接请求时,这个值可能很大。

 u Stream Errors计数器显示每秒发生的错误数。

 Stream errors代表被服务器丢弃的流数据包的数目。当服务器不能跟上数据的要求,必须丢弃一些数据包以避免不确定地落后于进度时,就会发生这类错误。在近期读取发生后,Sream errors通常会增加。它们预示着系统没有被正确地配置或其他应用程序正在竞争系统资源。过重的网络业务也会产生stream errors。

 u Stream Terminations计数器显示流由于错误而被终止的频率。

 Stream terminations预示着系统没有被正确配置或被流化的文件已经损坏。服务器在特定的环境下单方面地终止流--通常是当服务器已经落后预计进度很多时。如果服务器为保持进度必须丢弃来自给定流中的几个数据包时,它就会终止流。在文件的流化过程中遇到错误数据时,流也会被终止。

 u UDP Resend Requests计数器显示客户要求运行Windows Media Services的服务器重发以前没收到的数据包的次数。

 当服务器不能可靠地通过UDP发送数据包时,这个值可能会很高。这个计数器预示着服务器或网络已经超载。

 u UDP Resends Sent计数器反映由Windows Media server处理的UDP重发请求数目。

 如果服务器的负载很重的话,并不是所有的UDP重发请求都被处理,因此请求的重发数目和被发送的重发数目的不一致,预示着你的服务器不够强大。

 上面介绍的性能计数器对NetShow server来说是可选的,因此为了跟踪这些统计值你必须把他们加到Performance Monitor中。为此,在NetShow server上从NetShow Services 程序组选择NetShow Performance Counters。为了显示这些计数器,从Performance Monitor 的Edit菜单中选择Add to Chart,并选择NetShow Unicast Services作为对象。

 一旦一台单CPU的服务器的性能不能满足要求时,我们建议你使用一组计算机和负载均衡软件。Microsoft? Windows NT? Load Balancing Service (WLBS)允许基于TCP/IP的网络设备使用多达32台计算机,而这些计算机表现为一个逻辑TCP/IP地址空间。WLBS是对Microsoft Cluster Service (MSCS)的补充MSCS也是Microsoft? Windows NT Server, Enterprise Edition的一部分。可以从http://www.microsoft.com/ntserver/ntserverenterprise/default.asp/下载这一组件。你也可以使用多CPU系统来增加你的生产能力,尽管它会产生单点错误,没有串联系统可靠。

 7、客户端

 对客户端计算机的要求依不同的比特率,视频帧大小,和帧数的不同而不同。最重要的要求是要有一个高性能的图形卡及一个高性能的CPU。为了判断你的客户端能否足够快地解码你的内容,开始播放内容,在统计值窗口中观察Frames skipped和Packets lost两个值。

 如果显示的值比0大,那么客户端就不能及时地解码所有的视频帧并显示它们。下面显示的是为处理高达250Kbps数据率的数据所要求的最低配置:

 Pentium 166 or later with MMX. 

 32 MB of memory. 

 Graphics card with Microsoft? DirectX? drivers. 

 如果你提供的内容的比特率比250Kbps还高,就要使用下面的客户端配置。这个客户端计算机对于直到2Mbps数据率的数据都能处理得很好。

 Pentium II/233 or later. 

 64 MB of memory. 

 High-performance VGA card (most graphics cards purchased in 1998 or later perform well, especially if they have built-in 3-D support). 

 对于支持最高数据率的客户端计算机,使用下面的说明书:

 Pentium II/400 or later. 

 64 MB of memory. 

 High-performance VGA card (most graphics cards purchased in 1998 or later perform well, especially if they have built-in 3-D support). 

 需要注意的是要提高视频内容的质量。这就要求除了保证你的系统足够产生高比特率和高帧数的视频内容外,在产生过程中你必须小心以保证你的内容被无缺陷地录制和压缩。

 一个普遍的错误概念是认为压缩能掩盖原始材料中的缺陷。实际上,事实与此相反。压缩处理会放大任何可见的非自然信号或包含在原始视频中的噪声。这导致图像看起来要比用清晰的源产生的图像糟的多。为产生好的高(或低)比特率内容,最重要的是使用清晰的,低噪声的源。

 我们推荐你使用广播质量的磁带格式例如BetaS或Digital Betacam。如果没有这样的格式,consumer DV格式也可以。如果你不得不使用lower-grade consumer格式如VHS或Hi8,可以考虑购买一个带有TBC的录音重放装置。这些设备往往有较好的信噪比,并且TBC能帮助产生更稳定的画面。降低噪声和画面抖动是生成质量可以掩饰低数据率的压缩图像的关键。你必须保持你的信号传输途径尽可能干净。用一个Y/C(一般叫S-Video)连接会比用组合RCA插孔产生清晰得多的信号。如果你不打算建立一个高质量的源系统,你可以用一个外部设备专门从事这项工作。如果你不是在超过1Mbps的数据率下编码,你必须尽可能地控制源中的动作量。在较低的比特率下,高动作序列(画面晃动或缩放)会产生干扰用户的非自然像素信号。好的清晰的源也会产生更清晰的录制和更好的压缩。

 如果可能,为你的内容使用广播质量的材料。从胶卷上拍下画面,然后转换为视频图像,这样将会引入额外的帧,当他们在30 fps下在non-interlaced计算机监视器上回放时就会产生非自然的动作。如果你的材料是面向胶卷的,可以用一个专业编辑软件通过转换回24fps而去掉视频中的多余帧。这一被称为inverse telecine或3:2 pull down,的过程,不仅去掉了非自然动作,而且降低了编码和在客户端显示的整体能力要求。



 三、总结

 使用Windows Media Technologies需要你首先根据编码器,服务器,和客户端的功能和能力进行设置。

 首先要做的是保证你的编码平台能在高比特率和高帧数下编码内容。第二是一旦内容被产生了,要有一个能支持这一内容的服务器平台。记住,实时流不需要和随选流同样强大的服务器平台。如果你要处理大量的高比特率和高帧数率内容,可以投资购买几个服务器,这些服务器通过一个负载均衡系统管理。第三,为显示高比特率和高帧数视频内容,客户端要求 要比显示质量较低的流要高得多。在用户接收内容之前,一定要通知他们这些要求。

 最后,必须考虑产生好的源内容。最好的系统也不能弥补凌乱的语音,糟糕的照明和抖动的图像。如果所有的要求都满足了,当浏览这些流时用户的体验将会是极好的,并产生一个高质量的经历。





责任编辑:lmtwadmin

分享到:
版权声明:凡注明来源“流媒体网”的文章,版权均属流媒体网所有,转载需注明出处。非本站出处的文章为转载,观点供业内参考,不代表本站观点。文中图片均来源于网络收集整理,仅供学习交流,版权归原作者所有。如涉及侵权,请及时联系我们删除!