让同事都看上世界杯 流媒体服务器架设 | |
---|---|
http://www.sina.com.cn 2006年06月05日 08:54 中关村在线 | |
作者:中关村在线 NEO
一、“罪恶”的公司 “悲惨”的球迷 距离四年一度的世界杯盛会只剩数天之遥,一个万众瞩目的顶尖赛事,一个让亿万人疯狂的体育盛事,牵动着无数人的眼睛和心灵。周围绝大部分球迷都不太可能亲临现场,一睹自己喜爱的球队和球星的风采,只能在半夜里守候在电视机旁,对着直播画面喝彩。熬成“熊猫眼”想必也是在所难免。 尽管是球迷的超级节日,大部分公司也不可能为2006年德国世界杯让步,让大家天天看球,一定会如往常一样布置不少工作任务。大家都是“熊猫眼”进行工作恐怕效率十分低下。虽然个别同事会下载实况录像、或是直接通过电视卡在白天也能欣赏比赛,可是这样只能幸福个别人,怎样才能真正意义上的造福“劳苦大众”呢?也许架设流媒体服务器就是解决之道。让公司的同事们通过网络,就能够欣赏服务器上直播的电视画面或是精彩的进球视频集锦。 不过,在开始正式的流媒体服务器架设之前,请让我们先了解一下流媒体服务器的基础知识。 二、流媒体知识浅析 什么是流媒体? 目前,在网络上传输音/视频等多媒体信息有两种解决方案,即http或ftp下载以及流式传输。 http、ftp下载使用标准的http、ftp协议,但由于多媒体信息容量巨大,下载多媒体文件需要几分钟或几个小时的时间,这就造成为了看一个并不清楚内容的视频,首先需要耗费可能比整个视频都要长的时间来完成下载。这些被下载的文件还必须在下载前制作完成,放在网络服务器上,这样造成的直接后果就是:网络带宽不断提高,人们下载的等待时间越来越少,但最终还是不能观看网上现场直播。相信众球迷们更是无法作到。 流式传输时,声音、影像或动画等多媒体信息由流媒体服务器向用户计算机连续、实时的传送,它首先在使用者端的电脑上创建一个缓冲区,于播放前预先下载一段资料作为缓冲,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当多媒体信息在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。如果网络连接速度小于播放的多媒体信息需要的速度时,播放程序就会取用先前建立的一小段缓冲区内的资料,避免播放的中断,使得播放品质得以维持。 流式传输除了能够发送已经制作完成的文件外,还可以通过采集服务器实时采集现场音视频,推送到流媒体服务器端,实时提供给用户。因此,流媒体除了能够更好的承担如下载一样的多媒体点播服务外,更能够应用在现场直播、电视转播、突发事件报道等多种对实时性传输要求较高的领域。 流媒体的厂商 流媒体的市场如此巨大,世界上许多厂商都加入此行列,现阶段更是系统集成商竞争的风水宝地。在通用市场上,竞争的公司主要有三个:Microsoft、RealNetworks、Apple,而相应的产品就是:Windows Media、Real Media、QuickTime。而近来,以开发Winamp著名的Nullsoft公司也在自己的MP3服务器中加入了视频支持,欲在流媒体市场分一杯羹。 今天在这里我主要给大家介绍一下最为成熟的Microsoft、RealPlayer的产品。 流媒体的传输协议 大家在观看网上电影或者电视时,一般都会注意到文件的连接都不是用http或者ftp开头,而是以rtsp或者mms开头。实际上,这些和http和ftp一样,都是数据在网络上传输的协议,只是它们是专门用作传输流式媒体。 目前使用的主要的流媒体协议: 1. RTSP(Real Time Streaming Protocol),实时流媒体协议,它是由RealNetworks和Netscape共同提出的,现在用于RealNetworks的Real Media产品中; 2. PNM(Progressive Networks Audio),这也是Real专用的实时传输协议,它一般采用UDP协议,并占用7070端口,但当你的服务器在防火墙内且7070端口被挡,且你的服务器把SmartingNetwork设为真时,则采用http协议,并占用默认的80端口; 3. MMS(Microsoft Media Server protocol),这是微软的流媒体服务器协议,MMS 是连接 Windows Media 单播服务的默认方法。 流媒体文件和发布格式 有了实时的传输协议,我们应该还能够想到,只有较小的文件才适合网络实时传输,那么,流媒体文件采用了什么样的压缩算法呢? 而使用Windows操作系统的朋友可以看到,我们观看网上流节目时,它们的后缀名一般是rm、asf、wmv等,这些就是流媒体的格式。流媒体文件格式经过特殊编码,不仅采用较高的压缩比,还加入了许多控制信息,使其适合在网络上边下载边播放,而不是等到下载完整个文件才能播放。 常见的流媒体格式大致有以下几种: 流媒体文件格式扩展(Video/Audio) 媒体类型与名称 asf Advanced Streaming format (Microsoft) 另外还有一个wmv格式,是Windows Media Video的简称,它与asf文件有稍许区别,wmv一般采用window media video/audio 格式,asf视频部分一般采用Microsoft MPG4 V(3/2/1),音频部分是windows media audio v2/1,不过现在很多制作软件都没有把它们分开,所以直接更改后缀名就能够互相转换为对方格式。 制作完成的流媒体文件需要发布到网络上才能够被别人使用,这就需要以特定方式安排压缩好的流媒体文件,而安排流媒体文件的格式就被成为流媒体发布格式。常见的发布格式主要有以下几种: 流媒体发布格式扩展 媒体类型和名称 asf Advanced Streaming format. 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频率太低,处理能力过慢,电脑在被多用户访问时将我们无法进行其他任何操作,更恐怖的是,我们将要架设的服务器将要采用软件压缩方式,对于服务器CPU的选择,我们的建议至少是双核或双路的服务器处理器(比如,AMD的皓龙2XX系列)。 大容量内存和硬盘。流媒体的制作和发送是系统资源的黑洞,拥有大容量内存是系统稳定运行的前提;而流媒体文件体积较大,大量的媒体文件需要更多的存储空间。建议内存至少512MB,硬盘70GB以上,SCSI接口的更为理想。 占用系统资源少的声卡。独立声卡有助于CPU占用率的降低,并且对录音的质量有很大影响(用于网上直播),建议使用创新Creative的SB Live或SB Audigy、Audigy 2系列。 良好的视频捕捉设备。我们的直播节目源就来源于这块设备,推荐使用高档的带有视频采集功能的电视卡,信号接受的能力和硬件压缩的能力都要比较出众,否则服务器处理器速度很可能跟不上。 尽量高的带宽。当然是上网速度越快越好,不过我们可以在流媒体服务器中对连接数做限制,以免当机,当然在公司局域网中,一般来说都能实现百兆交换。 四、架设我们自己的“网络世界杯” 硬件已经READY,下面就开始架设自己的流媒体服务器。我们将以Microsoft公司的Windows Media为例,包括直播与点播服务器的建立。 由于Microsoft公司的Windows Media点播服务必须建立在Server版的操作系统上,所以笔者选取Windows Server 2003作为此次流媒体服务器建立的系统平台。 操作系统: Windows Server 2003 流媒体软件:Windows Media Services 9.0(Windows Server 2003自带)、 Windows Media Encoder 9 、 Windows Media Player 1。 下面,就让我们开始吧!不要走开。 WinMedia网上广播服务 单纯的使用Windows Media Encoder这个软件即可实现网上广播服务,不过,借助于Windows Media Services,利用Windows Media Encoder制作的流媒体文件,我们的网络广播站功能将更为强大。下面,我们将利用Windows Media Encoder单独建立广播站,并将其纳入Windows Media Services,实现更强大的功能。 1. 安装Windows Media Services。 首先安装Windows Server 2003,然后打开“开始-控制面板-管理工具-管理您的服务器”或“开始-控制面板-添加或删除程序-添加/删除Windows组件”(建议使用第二种),在其中勾取“Web应用程序服务器”,也就是2000 Server中的IIS服务器,单击“下一步”进行添加; 添加IIS完毕后,再次启动添加/删除Windows组件程序,并勾取Windows Media Service项,单击详细信息,在其中选择“用于Web的Windows Media Services Administrator”以启动Windows Media Services的Web管理功能(2000中可能没有这些选项,只需要安装Windows Media Services即可); 2. 安装Windows Media Encoder。 3. 从“开始-程序-Windows Media” 启动Windows Media Encoder,在出现的向导界面中根据自己的需要选择合适的选项,建议新手“使用新建会话向导广播、捕获或转换文件”,选择后单击确定; 4. 由于进行的是广播,所以在下一个弹出的画面中请选择“在附属设备或计算机屏幕广播实况事件”,这样的选择能够让Windows Media Encoder直接进行广播或者将其加入Windows Media Service服务; 5. 在下一个画面中选择您进行视频或音频捕获的设备; 6. 广播信号必须通过一个有效的端口进行传输,因此必须对它进行设置。Windows Media Encoder默认的端口为8080,但由于这个端口经常被其它软件占用,所以建议朋友们单击“查找可用端口”以换成其它随机端口或者直接输入没有被占用的端口。 7. 然后就开始选择我们进行广播的流媒体质量,有一个公式您可以参考:流媒体配置文件带宽×最大连接用户数=您的上行带宽(不是下载,是上传)。您如果只有有2Mbps的上行带宽,选择了100Kbps的配置文件,则最多允许同时20个观众看到您的广播,由此可见,流媒体服务对带宽的需求是巨大的; 8. 在这个窗口您可以选择将进行广播的流媒体存档,以便于以后观看或者进行点播,若只是作为实况广播服务,并且硬盘空间不大,可以不选取; 9. “下一步”后,您可以选择是不是添加微软内置的欢迎、休息和再见文件,一般来说,没必要要这些东西,微软给谁做过免费作广告; 10. 然后,我们可以给我们的广播节目添加上版权信息,这些信息在播放时,会出现在Windows Media Player中; 11. 弹出最后一个确认窗口后,我们最终的广播界面就出现了,若是有视频捕捉设备,只要单击“开始”,我们的广播站就运行起来,只要在客户机IE中输入“mms://服务器的:端口值”就会弹出media player播放电视。如我建立的广播站地址就是“mms://192.168.0.1:3170,这些信息您也可以直接在此界面的连接标签中查看; 12. 若是您和我一样没有视频捕捉设置,或者想向用户播放一段录制好的视频,请点击“会话-属性”(此面板能够对所有设置过的数据进行调整),单击“更改”按钮,在弹出窗口中选择视频右边的下拉框,单击“查找文件”,找到您预先录制好的视频文件(支持asf、wmv、avi、mpg等格式); 13. 再回到广播界面,点击开始,您的文件就可以被局域网中对世界杯极度饥渴的兄弟姐妹看到了,若是想添加更多的文件或设备,请在以上窗口单击“更改”旁的“新建”进行添加即可; 14. 您可能觉得到这里我们就大功告成了,实际上远远没有,这只是最基本的直播广播,我们还需要将其加入Windows Media Services的广播服务中,以实现更强大的功能。请将你的鼠标指向“开始-控制面板-管理工具-Windows Media Services”,打开Windows Media管理器(2000 Server应该是一个Web界面)。选择左边的服务器后,单击操作菜单中的“添加发布点(向导)”,经历欢迎页面后,会出现发布点命名窗口,在其中输入您愿意使用的名字; 15. 在下一个窗口中,将让您选择所要发布的内容类型,如果只是单纯的进行流媒体直播,就选择“编码器(实况流)”,若是想在实况流中加入其它制作好的文件,请选择“播放列表”,若是想建立视频点播服务器,请选择“目录中的文件”。由于我有现成的制作好的文件,所以选择了“播放列表”; 16. 选择完了发布内容的类型,就要选择发布的方案,我们进行的是网络广播的服务,当然要选择“广播发布点”。在接下来的窗口中,我们要选择内容的传递方式,看到了吧,这次我们前面介绍的单播和组播的基本概念起了作用,我们的网络一般不支持组播,所以要选择“单播”; 17. 若是您以前有创建好的播放列表文件(wsx或htm文件),直接在下一个窗口中选择“现有播放列表”,若是没有,请跟我一样,“新建播放列表后进行添加”。在添加窗口中,可以添加文件、编码器的实况流、远程发布点的流媒体、ASP、CGI的动态源等多种媒体,并且还可以添加广告信息以及调整媒体的播放顺序; 18. 完成播放列表的编辑后,点击“下一步”将播放列表保存成文件,并且在下一个窗口中可以选择是否“循环播放”或“无序播放”这些流媒体。再经历几个确认框,您就完成了Windows Media流媒体广播服务器的建立,为了快捷,我们就将“完成此向导后启动其它向导”前面的对勾去掉吧! 19. 服务器启动后,您就可以在Windows Media Player中输入“mms://服务器IP/发布点名称”观看网络广播了。而在Windows Media Services的管理器中,我们可以随时监视流媒体的播放情况、添加/删除与调整播放列表、插入广告、发布公告(可以直接生成htm页面)、调整该广播站的属性等操作,并可以随时通过下面的按钮启动与停止广播站以及测试当前流媒体是否正常; 20. 我们还可以通过在浏览器中输入管理器的网址或者直接启动管理工具中的“Windows Media Services(Web)”来对整个流媒体服务器进行Web管理以及远程管理,其管理界面与本地管理除了少几个功能外,几乎没有差别。 至此,专门为世界杯架设的Windows Media网络广播服务器已经完全建设完毕,这时我们已经拥有了一个具有强大功能的“世界杯”网络广播站,这下同事们在茶余饭后就有新的目的地了,不用再去网络上仅仅是茫然的盯着图片和文字,这时候我们就可以骄傲的对他们说,欲浏览最新、最酷世界杯战报,请访问MMS://192.168.0.x:3170 编者友情提示:对您个人使用公司资源架设服务器并在工作时间观看2006年度世界杯所发生的一切后果,笔者无法承担任何责任,请读者不要在老板的眼皮下面架设服务器,除非您的老板也是一位狂热的球迷。 |