流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。
这个过程的一系列相关的包称为“流”。流媒体实际指的是一种新的媒体传送方式,而非一种新的媒体。
流媒体技术全面应用后,人们在网上聊天可直接语音输入;如果想彼此看见对方的容貌、表情,只要双方各有一个摄像头就可以了;在网上看到感兴趣的商品,点击以后,讲解员和商品的影像就会跳出来;更有真实感的影像新闻也会出现。
流媒体技术发端于美国,在美国目前流媒体的应用已很普遍,比如惠普公司的产品发布和销售人员培训都用网络视频进行。
所谓流媒体是指采用流式传输的方式在Internet播放的媒体格式。如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播放,只是在开始时有一些延迟。流媒体实现的关键技术就是流式传输。
流式传输方式则是将整个A/V及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。
在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备(硬件或软件)对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。
传统的网络传输音视频等多媒体信息的方式是完全下载后再播放,下载常常要花数分钟甚至数小时。
而采用流媒体技术,就可实现流式传输,将声音、影像或动画由服务器向用户计算机进行连续、不间断传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。
如果将文件传输看作是一次接水的过程,过去的传输方式就像是对用户做了一个规定,必须等到一桶水接满才能使用它,这个等待的时间自然要受到水流量大小和桶的大小的影响。
流式传输,就比如,打开水头龙,等待一小会儿,水就会源源不断地流出来,而且可以随接随用,因此,不管水流量的大小,也不管桶的大小,用户都可以随时用上水。从这个意义上看,流媒体这个词是非常形象的。
流式传输时,声音、影像或动画等时基媒体由音视频服务器向用户计算机的连续、实时传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当声音等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。流式不仅使启动延时成十倍、百倍地缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部从Internet上下载才能观看的缺点。
在运用流媒体技术时,音视频文件要采用相应的格式,不同格式的文件需要用不同的播放器软件来播放,所谓“一把钥匙开一把锁”。
流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。
实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。
①顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。
由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,它经常被称作HTTP流式传输。
顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于该文件在播放前观看的部分是无损下载的,这种方法保证电影播放的最终质量。这意味着用户在观看前,必须经历延迟,对较慢的连接尤其如此。对通过调制解调器发布短片段,顺序流式传输显得很实用,它允许用比调制解调器更高的数据速率创建视频片段。尽管有延迟,毕竟可让你发布较高质量的视频片段。
顺序流式文件是放在标准HTTP 或 FTP服务器上,易于管理,基本上与防火墙无关。
但是顺序流式传输不适合长片段和有随机访问要求的视频,如:讲座、演说与演示。它也不支持现场广播,严格说来,它是一种点播技术。
②实时流式传输指保证媒体信号带宽与网络连接配匹,使媒体可被实时观看到。
实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。
理论上,实时流一经播放就可不停止,但实际上,可能发生周期暂停。实时流式传输必须配匹连接带宽,这意味着在以调制解调器速度连接时图象质量较差。而且,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量很差。如欲保证视频质量,顺序流式传输也许更好。
实时流式传输需要特定服务器,如QuickTime Streaming Server、RealServer与Windows Media Server。这些服务器允许你对媒体发送进行更多级别的控制,因而系统设置、管理比标准HTTP服务器更复杂。
实时流式传输还需要特殊网络协议,如:RTSP (Realtime Streaming Protocol)或MMS (Microsoft Media Server)。这些协议在有防火墙时有时会出现问题,导致用户不能看到一些地点的实时内容。
一般说来,如视频为实时广播,或使用流式传输媒体服务器,或应用如RTSP的实时协议,即为实时流式传输。如使用HTTP服务器,文件即通过顺序流发送。采用那种传输方法依赖你的需求。当然,流式文件也支持在播放前完全下载到硬盘。
流媒体传输的过程
由于流媒体技术在一定程度上突破了网络带宽对多媒体信息传输的限制,因此被广泛运用于网上直播、网络广告、视频点播、远程教育、远程医疗、视频会议、企业培训、电子商务等多种领域。
流媒体技术为传统媒体在互联网上开辟更广阔的空间提供了可能。广播电视媒体节目的上网更为方便,听众、观众在网上点播节目更为简单,网上音视频直播也将得到广泛运用。
流媒体技术将过去传统媒体的“推”式传播,变为受众的“拉” 式传播,受众不再是被动地接受来自广播电视的节目,而是在自己方便的时间来接收自己需要的信息。这将在一定程度上提高受众的地位,使他们在新闻传播中占有主动权,也使他们的需求对新闻媒体的活动产生更为直接的影响。
流媒体技术的广泛运用也将模糊广播、电视与网络之间的界限,网络既是广播电视的辅助者与延伸者,也将成为它们的有力的竞争者。
利用流媒体技术,网络将提供新的音视频节目样式,也将形成新的经营方式,例如收费的点播服务。
发挥传统媒体的优势,利用网络媒体的特长,保持媒体间良好的竞争与合作,是未来网络的发展之路,也是未来传统媒体的发展之路。
流媒体技术的运用只是一个开端,无数新的技术还在前面等着我们。
流式传输的实现需要缓存。
因为Internet以包传输为基础进行断续的异步传输,对一个实时A/V源或存储的A/V文件,在传输中它们要被分解为许多包,由于网络是动态变化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。
通常高速缓存所需容量并不大,因为高速缓存使用环形链表结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。
流式传输的实现需要合适的传输协议。由于TCP需要较多的开销,故不太适合传输实时数据。
在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时声音数据。
流式传输的过程一般是这样的:用户选择某一流媒体服务后,Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输的实时数据从原始信息中检索出来;然后客户机上的Web浏览器启动A/VHelper程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V数据的编码类型或与A/V检索相关的服务器地址。
A/VHelper程序及A/V服务器运行实时流控制协议(RTSP),以交换A/V传输所需的控制信息。与CD播放机或VCRs所提供的功能相似,RTSP提供了操纵播放、快进、快倒、暂停及录制等命令的方法。A/V服务器使用RTP/UDP协议将A/V数据传输给A/V客户程序(一般可认为客户程序等同于Helper程序),一旦A/V数据抵达客户端,A/V客户程序即可播放输出。
需要说明的是,在流式传输中,使用RTP/UDP和RTSP/TCP两种不同的通信协议与A/V服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/VHelper程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器
流媒体之所以能够实现多媒体数据的实时播放是采用了专门的网络控制协议和数据传输机制。服务器端有专门的流媒体发布系统,而客户端则有专门的播放器,这两部分都需要通过数据缓存区进行数据的缓存。
与普通的分组交换网络不同,流媒体系统的缓存区中的数据在数据传输过程中是动态的,也可成为是交换状态的,数据以堆栈方式进出缓冲区,而不需要等待数据全部达到客户机后才从缓冲区中被释放出来,由于数据缓冲区中的数据是“流动”的,再加上数据的播放需要维持一个稳定的数据输出速度,随时都要求缓冲区有相应的数据提供给播放器,如果没有相应的数据,则会出现内容播放过程中的暂停和画面的条约。
出现前一种情况一般是由于网络传输速度跟不上数据的播放速度,而发生了数据的下溢,而后一种情况的发生是由于网络传输速度过快,超过了播放的速度,而又没有适当的传输控制而造成的数据上溢。
RTP 协议是 IETF 在 1996 年提出的适合实时数据传输的新型协议。
RTP 协议实际上是由实时传输协议RTP(Real-time Transport Protocol)和实时传输控制协议RTCP(Real-time Transport Control Protocol)两部分组成。
RTP 协议基于多播或单播网络为用户提供连续媒体数据的实时传输服务;RTCP 协议是 RTP 协议的控制部分,用于实时监控数据传输质量,为系统提供拥塞控制和流控制。
每一个 RTP 数据包都由固定包头(Header )和载荷(Payload)两个部分组成,其中包头前12个字节的含义是固定的,而载荷则可以是音频或视频数据。
H.264/AVC 是ITU-T 视频编码专家组(VCEG)和ISO/IEC 动态图像专家组(MPEG )联合组成的联合视频组(JVT)共同努力制订的新一代视频编码标准。
它最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264 的压缩比是MPEG-2 的2 倍以上,是 MPEG-4的1.5~2 倍。同时,采用视频编码层(VCL)和网络提取层(NAL )的分层设计,非常适用于流媒体技术进行实时传输。基于 RTP 协议,对 H.264 视频进行流式打包传输,便可实现一个基本的流媒体服务器功能,同时利用开源播放器VLC 作为接收端,就可构成一个完整的H.264 视频传输系统。
H.264 的基本流(elementary stream,ES)的结构分为两层,包括视频编码层(VCL)和网络适配层(NAL)。
视频编码层负责高效的视频内容表示,而网络适配层负责以网络所要求的恰当的方式对数据进行打包和传送。
引入NAL并使之与VCL分离带来的好处包括两方面:
- 使信号处理和网络传输分离,VCL 和NAL 可以在不同的处理平台上实现;
- VCL 和NAL 分离设计,使得在不同的网络环境内,网关不需要因为网络环境不同而对VCL比特流进行重构和重编码。
H.264 的基本流由一系列NALU (Network Abstraction Layer Unit )组成,不同的NALU数据量各不相同。
H.264 草案指出,当数据流是储存在介质上时,在每个NALU 前添加起始码:0x000001,用来指示一个 NALU的起始和终止位置。
在这样的机制下,解码器在码流中检测起始码,作为一个NALU得起始标识,当检测到下一个起始码时,当前NALU结束。每个NALU单元由一个字节的 NALU头(NALU Header)和若干个字节的载荷数据(RBSP)组成。
H.264流媒体传输系统框架