MPEG-4与流媒体
说到流媒体就不能不提及MPEG-4。MPEG-4是当前讨论的焦点之一,只因为它能够在大的压缩比下实现近似DVD品质的视频和音频效果,这也是许多朋友认为MPEG-4格式肯定比rm清晰的原因。但事实上并不是如此,MPEG-4只是一种视频编码技术,它的清晰度也根据压缩时所选择的码率的不同有较大的改变(我们见到的MPEG-4格式文件通常为500Kbps压缩生成,质量当然高了),并且,MPEG-4还有多种压缩标准,如Microsoft的asf视频部分就是基于MPEG-4的Discrete Cosine Transform (DCT),另外还有DivX的免费MPEG-4版本(开始是破解微软的格式而来)。至于音频部分,更是混乱,Microsoft采用windows media audio v2/1,DivX采用MP3或者更高质量的AC3等。相比而言,Real或者Apple的格式使用的是自己开发的编码,在相同码率,特别是低码率下,不见得就比MPEG-4差,采取高码率的rm格式照样清晰可人,所以大家以后说rm格式清晰度差的观念要改变一下:),至少也要加上条件。而且,最新的Helix Producer中的Real Video 9采用VP5压缩格式进行编码,这可比DivX优秀多了!
不过,流媒体服务器开始向MPEG-4格式靠拢是不争的事实,Real最新的Helix就开始支持mp4格式文件的服务,而RealOne Player更是只需安装一个插件便可实现MPEG-4格式的播放。
点播与广播
在架设流媒体服务器之前,我们一定要了解一些点播与广播的知识。
点播是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,一个客户端从服务器接收一个媒体流(这个连接是唯一的,其它用户不能占用),并且能够对媒体进行开始、停止、后退、快进或暂停等操作,客户端拥有流的控制权,就像在看影碟一样。这种方式由于每个客户端各自连接服务器,服务器需要给每个用户建立连接,对服务器资源和网络带宽的需求都比较大。
广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流,用户不能暂停、快进或后退该流,广播使用的数据发送手段有单播与广播。使用单播发送时,服务器需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽和服务器资源,因此产生了组播(多播)技术。
组播(多播)吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给需要的那些客户,组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的最小带宽。但组播不仅需要服务器端支持,更需要有多播路由器乃至整个网络结构的支持。
单播与组播(多播)
在上面我们已经了解了一些单播和组播的概念,这也是现在流媒体方面讨论的焦点之一。以我的认识,点播与广播是一组概念,它们和客户端媒体交互的手段;单播和组播又是另外一组概念,它们是流媒体数据在服务器端和网络上的传输方式。
单播发送时,需要在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,每个用户必须分别对媒体服务器发送单独的查询,而服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余会造成服务器沉重和网络带宽的沉重负担,响应需要很长时间,甚至出现不能服务的情况。单播可以用在点播和广播上。
组播发送时,服务器将一组客户请求的流媒体数据发送到支持组播技术的路由器上,然后由路由器一次将数据包根据路由表复制到多个通道上,再向用户发送。这时候,媒体服务器只需要发送一个信息包,所有发出请求的客户端都共享同一信息包,并且信息可以发送到任意地址的客户机,没有请求的客户机不会收到信息包,网络上传输的信息包的总量没有广播那么多,大大提高了服务器和网络线路的利用率。不过组播也有自己的特点,首先是必须要开始支持组播技术的路由器,另外就是一般只能用作广播,因为用作点播会存在用户控制问题。
好了,说了这么多,您可能都嫌我烦了,那么,就让我们开始架设流媒体服务器之旅吧。
三、流媒体服务器硬件准备
流媒体服务器和网站(Web)服务器一样,要经受许多人的同时访问,相比Web服务器来说,由于多媒体文件需要更强处理能力,其硬件设备应超越一般用于Web的服务器。所以,流媒体服务器最好满足以下硬件条件。
一颗强劲的“芯。如果计算机CPU频率太低,处理能力过慢,电脑在被多用户访问时将我们无法进行其他任何操作(相信大家对那些网上视频点播的网站经常当机身有体会,我们和他们建立的是一样的服务器,只是规模小些罢了)。
大容量内存和硬盘。流媒体的制作和发送是系统资源的黑洞,拥有大容量内存是系统稳定运行的前提;而流媒体文件体积较大,大量的媒体文件需要更多的存储空间。建议内存至少256MB,硬盘80G以上。
占用系统资源少的声卡。好的声卡有助于CPU占用率的降低,并且对录音的质量有很大影响(用于网上直播),建议使用Creative的SB Live!或SB Audigy、Audigy 2系列,由于笔者自己的机器不做服务器(只用来做文章,没钱升级啊),所以只拿普通的集成来演示。
良好的视频捕捉设备。我们的直播节目源就来源于这块设备,推荐使用Leadtek(丽台)的WinFast TV2000 XP豪华版,它接收信号的能力和硬件压缩的能力都是比较出众的(因为笔者没有条件,所以采集设备用了屏幕捕捉,不过使用采集设备的方法是相同的,所以请大家不要见怪)。
尽量高的带宽。当然是上网速度越快越好,不过我们可以在流媒体服务器中对连接数做一个限制,以免当机。
当然,上面是建设一个属于自己的流媒体服务网站必须的硬件设备,如果只是和笔者一样,只是想在架设流媒体服务器过程中学习一把,大可在现有机器的基础上大胆测试。