zoukankan      html  css  js  c++  java
  • 流媒体网站开发技术浅谈

    流媒体网站开发技术浅谈(2012-02)
    2012-03-02    新闻来源:武汉广电网

      张方东

      (黄陂区广播影视局事业技术科)

      摘 要:随着有线和无线网络宽带的高速发展,人们不再满足于因特网中仅有的文字、图片等简单信息,而越来越希望看到更直观、更丰富的影视节目,流媒体网站因此应运而生。本文从流媒体概念、流媒体格式、流媒体文件制作、流媒体文件传输、流媒体文件发布及流媒体网站部署等方面对开发流媒体网站作了详细阐述。

      关键词:流媒体 网站开发 部署 技术

      1.概述

      在网络上传输多媒体有下载和流式传输两种方式。如果将文件传输作为一个过程,那么下载传输方式就要等到文件传输完成后才能使用,这个等待的时间受传输速度和接收端容量大小的影响;流式传输则是边传输边使用。流媒体技术使网络用户不必等待漫长的下载时间,就可以实现在网络上收听收看影视节目,这一模式与传统的广播、电视播放极为相似,同时也意味着网络媒体对传统广电媒体的冲击。流媒体网站的开发正是基于流媒体技术,将流媒体文件与网页文件有机结合起来,通过Web页面播放流媒体文件。

      2、流媒体技术的概念

      流媒体技术(streaming)是指在发送端和接收端之间以独立于网络负载的以给定速率传输音频和视频信息的一种传输技术。流媒体具有隐含的时间维、传输的实时性和高吞吐量等特点。流媒体技术是一种使用流式传输连续的时基媒体的技术。流式传输方式是将视频、音频等媒体通过压缩为一个个压缩包,由流服务器向用户实时传送,用户端只需缓存足够可播放的视频分组就可以开始播放。

      3、常用流媒体文件格式

      网络上应用的流媒体文件格式与计算机应用的多媒体文件有很大差别,如作为VCD标准的MPEG-1可针对SIF标准分辨率(对于NTSC制为352×240,对于PAL制为352×288)的图像进行压缩,传输速率为1.5Mbps。但这样的速率对于网络用户是很难达到的。所以目前流行的流媒体技术是针对因特网带宽和传输质量较低而发明的技术,主要是将多媒体文件格式进行“二次”处理后,发布到网上。它包括采集、编码、传输、存储和解码等多项技术。流媒体应用系统一般分为编码端、服务器端和客户端3部分。与因特网技术发展不同的是,到目前为止,流媒体系统的发展仍处于厂家标准阶段。如下表1,表示了目前使用的主要流媒体文件格式及相关信息。

      产品

      文件扩展名

      编码器

      服务器

      客户端

      Real System

      rm ra rp rt

      Helix Producer

      Helix Server

      Realplayer

      Ms Windows Media

      Asf wmv wma

      Windowsmedia encoder

      Windowsmedia server

      Windowsmedia player

      Apple quicktime

      Mov qt

      Quicktimebroadcaster

      Quicktime

      Quicktime player

         

      Streaming server

     

      表1 主要流媒体文件格式及相关信息

      4、流媒体传输技术

      在储存式音频和视频数据流应用中,客户端请求存放在服务器上的压缩音频和视频文件,这个服务器可以是通常的Web服务器,也可以是专门用来为音视频流提供服务的流媒体服务器。服务器将音频和视频文件送到一个与客户端相连的套接字。TCP和UDP套接字都能实现此功能。在发送文件到网络上之前,文件被分段,用特殊的头部来封装这些段以适于文件传送。实时协议(RTP)就是封装上述段的公共域标准。一旦客户端开始接收请求的音频和视频文件,就将在几秒后开始播放。其交互功能由暂停、继续、播放时间的跳跃等完成。

      用户通过Web浏览器提出音频和视频流请求,但是由于其播放没有集成到客户端中,这就需要一个辅助应用程序来播放文件——媒体播放器,如:Real Network的Real player和微软的Windows Media Player等。媒体播放器具有以下功能:

      (1)解压,为节省存储空间和网络带宽,音频和视频通常都是压缩的。媒体播放器必须在播放时解压。

      (2)消除抖动分组。抖动是数据流中分组从源到目的地的延迟的差异。由于音频和视频必须同步播放,接收者必须对接收的分组做短期的缓存来消除抖动。

      (3)纠错。由于不可预知因特网拥塞,分组数据流中的一段可能丢失。如果此片段非常大,用户就无法接受音频和视频的质量了。许多流式系统就尝试恢复丢失的数据。它们或者通过冗余分组的传送重建丢失的分组,或者直接要求重发这些分组,或者从收到的数据推断并插入丢失的数据。

      (4)带控制部件的用户界面。这是用户可操作的部分,包括音量控制、暂停/继续按钮、时间跳跃滑动条等。

      4.1访问Web服务器的音频和视频文件

      音频和视频文件存放在Web服务器上通过HTTP发送给客户端,或者存放在流服务器上通过非HTTP发送给客户端。其结构如图1所示。

      

      

      图1 简单的音频和视频流体系结构

      此体系运作流程如下:

      (1)Web浏览器建立到Web服务器的TCP连接并发出请求音频和视频文件的HTTP请求报文。

      (2)Web服务器向浏览器发送带有音频和视频文件的HTTP响应报文。

      (3)HTTP响应报文的内容类型头部行声明了指定的音频和视频编码。客户端浏览器分析响应报文的内容类型,调用相关的媒体播放器,并传递文件给媒体播放器。

      (4)媒体播放器开始播放文件。

      这种媒体播放存在的问题是:媒体播放器必须通过Web浏览器的中介才能与服务器实现交互。这就要求整个文件必须完全下载后才能传递给媒体播放器进行播放。对于较大的文件来说,播放前的延迟难以让人接受。由于这个原因,此种应用必须采取直接由服务器到媒体播放器的方法,即在服务器与媒体播放器进程之间建立直接套接字连接。如图2所示。

      

      

      图2 元文件应用的音频和视频流体系结构

      元文件是提供数据流式的音频和视频文件信息(如URL,编码类型)的文件。Web服务器将音频/视频直接发送给媒体播放器,这种直接TCP连接的建立流程如下:

      (1)用户单击音频/视频文件超级链接。

      (2)此链接不是直接指向音频/视频文件,而是一个元文件。这个元文件包括实际音频/视频文件的URL。响应报文将此元文件封装,包括内容类型头部行,声明指定的音频/视频文件。

      (3)客户端浏览器分析响应报文的内容类型头部行,调用相关的媒体播放器,将响应报文的整个报文体传送给媒体播放器。

      (4)媒体播放器建立一个直接到HTTP服务器的TCP连接。媒体播放器向TCP连接中发送一个请求音频/视频文件的HTTP报文。

      (5)文件通过HTTP响应报文发送到媒体播放器,媒体播放器开始流式播放。

      获取元文件这一中间步骤非常重要。当浏览器知道文件的内容类型时,它就可以调用适当的媒体播放器,然后媒体播放器直接与服务器通信。

      以上两种体系结构的媒体播放器都通过了HTTP,因此也通过了TCP与服务器通信。HTTP无法充分地实现用户与服务器的交互,特别是不轻易允许用户(通过媒体服务器)发送暂停、继续、快进命令给服务器。

      4.2从流式服务器发送多媒体到媒体播放器

      为了避开HTTP和TCP,可以使用流式服务器将音视频传送到媒体播放器。流式服务器一般是厂家标准的流式服务器,如Helix Server和Windows Media Server等。通过流式服务器,可以使用应用层协议在UDP之上发送音视频,应用层协议比HTTP更适用于音频和视频流。如图3所示。

      

      

      图3 媒体服务器与播放器直接互动的视频流体系结构

      这种体系结构需要两个服务器,一个服务器是HTTP服务器,管理Web页面(包括元文件);第二个是流式服务器,管理音频和视频文件。两个服务器可以运行于一个端系统内,也可以运行于两个独立的端系统中。其工作步骤与前一个相似。但是这里媒体播放器是向流式服务器而不是Web服务器请求数据,媒体播放器与流式服务器可以用自己的协议交互。这些协议可以使用户方便地与音频流和视频流交互。

      5、流媒体信息的网站发布

      流媒体文件信息发布的基本步骤如下:

      (1)    源文件的制作,通常使用摄像机录制音视频节目。

      (2)    将内容转入到计算机,实现了影像的数字格式记录。

      (3)    利用视频编辑软件对影像内容进行编辑,加上字幕或背景音乐等。

      (4)    进行视频文件的转换。为满足用户的不同需求,需要将已经编辑好的视频文件进行不同的数字制式转换,变成不同的流媒体文件格式。如将MPEG格式转换成rm格式等。

      (5)    配置必要的客户端和服务器软件,方便视频资料的发布。不同的流媒体文件需要配置不同的客户端进行播放。

      在目前许多网络应用场合,Real System的应用更为普遍。RM文件是Real流媒体的核心,Helix Producer是Real流媒体制作流程中的关键软件,使用Helix Producer生成的流媒体文件被放置在Helix Server的内容目录下,可以实现点播功能。若在编码的同时,将其立即发送到Helix Server,可以实现直播功能。此外Helix Producer还可以将其他格式的多媒体文件转换为Real流媒体文件。

      5.1 RM文件的制作

      Helix Producer Plus9可以将其他格式的多媒体文件转化为Real流媒体,也可以将直播的音视频转化为Real流媒体,还可以在编码的同时立即发送到Helix Server进行直播。

      Ø     【音频模式】]包括“音乐”、“语音”、“无音频”三种模式,主要用于设定音频的效果。对于混合的音频或高位数的音频,选用“音乐”模式效果较好。

      Ø     【视频模式】包括“标准运动视频”、“高调图像”、“平滑运动”、“幻灯显示”和“无视频5种模式”。当视频中包含很多运动画面时,应选择“标准运动视频”模式;如果希望有较高的清晰度,可以选择“高调图像”;如果希望画面过渡更加平滑,可以选择“平滑运动”模式;对于静止图像制作的切换效果,只需保持高清晰度即可,此时可选择“幻灯显示”模式。

      Ø     【视频编码器】包括RealVideo G2 with SVT、RealVideo8和RealVideo9 3种编码器。其中在任何比特率下,RealVideo9编码可以达到最佳视频效果。

      Ø     【听众选择】栏中的SureStream功能,能够以若干不同的速率传送相同的音视频内容,他们集成在一个流媒体文件中,这个文件会根据目标观众的网络速度自发发送对应的内容。

      5.2 在网页中链接Real流媒体

      从网页到Real流媒体的链接通常不是直接连接到RM文件,而是通过RAM文件实现,将Real流媒体嵌入网页则通过RPM文件实现。

      当用户单击网页一个指向位于Real服务器上的流媒体文件的链接时,许多浏览器由于它们原有的设置,并不会启动RealPlayer作为一个辅助的播放程序,Real System提供了一种中间体文件(RAM文件),帮助用户端系统启动RealPlayer。

      RAM文件是纯文本文件,其文件扩展名为.ram。在RAM文件中,列出了所要播放的流媒体文件的URL地址。当用户浏览器载入RAM文件时,就会启动RealPlayer作为辅助播放程序,RealPlayer会自动按照RAM文件中的URL地址,调入媒体文件进行播放。

      编写网页时,通过标准链接到Helix Server或Web Server上的RAM文件,由RAM文件激活RealPlayer播放器播放Real流媒体。如:

      Ram.htm文件为

      <html>

      <head>

      <title>链接RAM文件</title>

      </head>

      <body>

      <a href=”test.ram”>链接RAM文件</a>

      </body>

      </html>

      Test.ram文件内容如下:

      http://127.0.0.1/realvideo.rm

      在浏览器中运行ram.htm文件,单击超级链接“链接RAM文件”,出现RealPlayer,播放本地Apache中的realvideo.rm文件。如果计算机已经连接到因特网,将127.0.0.1替换为网上测试主机的URL即可。如果连接的是Helix Server,须将HTTP改为RTSP。

      5.3 在网页中嵌入Real流媒体

        将RealPlayer播放窗口嵌入到Web页面中,用户就可以在浏览器观看播放的流媒体文件,有利于保持用户视窗界面的规范和整洁。

      在网页中嵌入流媒体通常使用<embed>标记链接到RPM文件,RPM文件与RAM文件完全一样。通过设置<embed>标记的controls参数,可以在网页中加入控件,对流媒体播放进行控制。这样,在网页上包含了视频播放窗口和控制面板。如:

      网页文件rpm.htm

      <html>

      <head>

      <title>链接Rpm文件</title>

      </head>

      <body>

      <!--播放窗口代码-->

      <center>

      <embed src=”test.rpm” width=320 height=240 controls=imagewindow console=one autostart=true>

      <br>

      <!—控制面板代码-->

      <br>

      <embed src=”test.rpm” width=320 height=100 controls=all console=one>

      </center>

      </body>

      </html>

      而test.rpm文件为:

      http://127.0.0.1/realvideo.rm

      使用浏览器运行rpm.htm文件,RealPlayer播放器将嵌入浏览器页面中。

      6、流媒体网站的部署

      各个厂家的流媒体系统有其自己的特色,但主要构件为4个部分:媒体编码器、媒体文件存储器、媒体服务器、媒体播放器。这4个部分相互协作共同构成流媒体服务体系,系统架构及个部分关系如图4所示

      

      

      图4 流媒体系统架构

      Ø     媒体编码器。将原始的媒体文件或摄像头采集的实时媒体数据制作成适合网络传输的文件格式(流格式),然后将流文件存储在媒体文件存储器中或直接送到流媒体服务器。

      Ø     媒体文件存储器。存储流格式的媒体文件,一般采用SCSI硬盘或磁盘阵列。

      Ø     媒体服务器。响应调度服务器从Web服务器转过来的用户请求,通过网络传输协议将流格式的文件传到用户桌面。

      Ø     媒体播放器。接收网络媒体数据并在本地播放。

      出于负载均衡和支持更多用户考虑,媒体服务器一般建成局域网集群的方式并作NBP的镜像处理,通过一台管理服务器根据各服务器负载状况决定将用户请求发往当前负载最轻的服务器,管理服务器还负责流媒体文件管理,数字版权管理等。流媒体服务的门户站点一般仍然为Web服务器。

      7、流媒体传输质量控制

      传输质量控制是制约流媒体服务性能的最重要因素,也是流媒体运营商首要关心的问题。即在现有网络带宽条件下,系统如何支持尽可能多的并发数,如何保证端到端的流媒体QoS。

      为了支持尽可能多的并发用户数,同时避免因大量的并发数带来服务器的负荷加大,QoS降低的情况,就要求系统对网络流量和并发数进行管理和限定。如下表2所示。

      指标

      说明

      最大并发数

      同时连接服务器的用户数

      单流最大速率

      单个用户连接服务器允许的最大速率

      最大网络带宽

      流媒体服务器能提供的最大速率,一般不超过网卡速率的85%

      表2 流媒体服务器传输的带宽指标

      上述3个指标的关系应满足:最大网络带宽/最大并发数≤单流最大速率。不同厂家的流媒体产品对上述指标的确定方法不同。有些直接在服务器端设定;有些通过许可证机制设定,但实际数值仍与服务器性能有关。

      流媒体业务是一种宽带业务,对于网络带宽、抖动、延迟和丢包率都有较高的要求。为了提供较好的QoS,目前流媒体领域已发展了几种较为成熟的带宽适应和质量控制技术。

      Ø     智能流技术。系统能自动检测网络状况并将音视频流的属性调整到最佳,使用户收到与其连接速度相符的媒体流,从而获得最佳的用户体验。其实质是通过C/S模型应用层的速率反馈机制探测网络带宽变化,利用媒体流的多速率层次编码能力,在服务器端动态的调节媒体流的传输速率,以保证用户在网络带宽变化的条件下仍能收到质量较好的媒体流。

      Ø     分流技术(splitting)。一般应用于网络直播。发送服务器通过UDP单播、组播等方式将直播媒体流发送到分布在各地的多个接收服务器,客户端可以就近访问服务器获得较高质量的媒体流,同时减少带宽使用。分流技术有推(push)和拉(pull)两种模式。

      Ø     内容分发网络技术(CDN)。它作为基础IP网络之上的一个内容叠加网,通过引入主动内容管理、全局负载均衡和内容缓存等技术,可以将用户请求的流媒体内容发布到距离用户最近的网络边缘,从而提高用户的访问响应速度,并有效解决网络拥塞,最大限度地减轻骨干网络流量。

      Ø     缓存技术(caching)。由于因特网是以不连续的异步分组传输为基础,一个实时的媒体流或媒体文件在传输中将被分成多个包传输。由于网络延时、抖动等因素,数据包到达客户端的顺序和延迟可能不一样,可能出现先发的分组后到的情况,因此需要缓存系统来弥补网络延迟和抖动的影响,以保证数据分组的顺序正确,不会因为网络暂时拥塞而出现播放停顿的现象。缓存技术有正向缓存、反向缓存和透明代理缓存技术。

      参考文献:

      [1]张虹,等. 计算机网络多媒体技术与应用. 北京:机械工业出版社,2003

      [2]龚玲,张云涛. 计算机网络与Web技术. 北京:机械工业出版社,2005

      [3]黄传河,等计算机网络应用设计武汉:武汉大学出版社,2004

      [4]David Powers.PHP与Dreamweaver基础教程. 陈宗斌,等,译. 北京:人民邮电出版社,2008

  • 相关阅读:
    Linux开机流程【原创】
    Linux下无需按下回车(无阻塞)读取输入键值
    Sql Server 列转行 Pivot使用
    mysql
    mysql
    mysql
    CI
    mysql
    Snagit: Scrolling is not working
    Something about SnagIt
  • 原文地址:https://www.cnblogs.com/macliu/p/4285585.html
Copyright © 2011-2022 走看看