微软在1998年和Windows媒体播放器6.1一起发布了WMST(Windows Media Stream Thining)。WMST已经有点“智能”了,WMST会自动检测网络状况,然后根据响应降低影像的码率,如果没有网络信号的时候,客户端甚至会不放视频,而只播放声音(因为音频流要求的码率更低)。
而最早的多码率流控是2000年和Windows媒体播放机6.4一起发布的Windows媒体服务4.0(WMS4.0)以及Wndows媒体服务4.1(WMS4.1)。WMS4.1使用一个ASF文件储存多个不同码率的同一路流,Windows媒体流控协议(WMSP)支持在多个不同的流之间切换。这个技术一般叫做MBR ASF(Multiple Bit Rate ASF-多码率ASF)
2002年的时候,微软发布了Windows媒体9系列产品。其中也包括Windows媒体服务9.0以及Windows媒体播放机9.0。Windows媒体9系列发布一个改进版的MBR,叫做“智能流(Intelligent Streaming)”,“智能流”结合了带宽检测,WMST技术,MBR ASF技术,以及一个更好的用于Windows媒体播放机图像处理技术。当然了,“智能流”依然要求媒体文件要编码成MBR ASF文件格式,而且要专用比如说像Windows媒体编码器(Windows Media Encoder)这样的工具才行。
Move Networks公司2008年的时候已经在不同的场合证实了,基于HTTP对流媒体是可以进行大规模的分发的,不但可以用于视频点播,还可以用于直播服务,例如用Silverlight作为客户端播放器的Democratic National Convention网站。2008年北京奥运会的时候,在NBC视频网站上,微软再一次证实了用基于HTTP的流媒体的分发是完全可行的,那就是微软的平滑流的技术原型。
一旦客户端和服务器的会话(Session)建立了,服务器就将媒体固定地传送成一个个小RTP(Real Time Packet)包(这些包的格式是按RTP协议封装的)。通常一个RTP包的大小是1452字节,这意味着视频会编成每秒钟1兆字节的流,每个包里大约有11毫秒的视频内容。在RTSP协议下,这些包会通过UDP或者TCP网络协议进行传送,当网络防火墙或者网络代理阻挡了UDP包的时候才会用TCP协议进行传送,因为TCP包传送的时候会不断重试,直到客户端收到为止,所以用TCP传很明显会增加网络的延迟,而网络延迟增大,就会影响影视的播放质量。
传统的流控协议还有Adobe公司的RTMP协议(Proprietary Real Time Messaging Protocol),以及RealNetworks公私的RDT协议(RTSP over Real Data Transport Protocol)。 Adobe公司新开发的用于Flash7.0?的协议动态流控流切换功能还是基于RTMP协议的,所以还是传统的流控协议,还不是自适应流控技术。
b)渐进式下载(Progressive Download)
如今另一种通过WEB服务器分发媒体的方式就是渐进式下载,渐近式下载其实也就是一种简单的从HTTP WEB服务器进行文件下载的普通方式。大多数媒体播放器和平台都支持渐进式下载,比如说ADOBE FALSH,SILVERLIGHT以及Windows媒体播放机。“渐进”这个术语源于播放器客户端允许媒体文件还正在下载的时候就开始播放,不用等到整个文件下载都完成写到磁盘上之后,通常情况下播放内容都是先直接放在浏览器的缓存里的。支持HTTP1.1标准的客户端可以通过向WEB服务器进行字节范围请求(byte range request)来寻址到没有下载完成的媒体文件的相应位置。
在典型的自适应流控实现中,视频和音频源被切分成很多短的片断(“chunks“--流控块),然后被编码成需要的分发格式。流控块通常有两到四秒长。在视频编码级别,这通常意识着每个流控块被切分成一个视频图像组(GOP(Group of Pictures))边界(每个流控块都包含一个关键帧),于是就不用依赖过去或者将来的流控块的任何图像组的信息了。这样每个流控块之间就可以独立于其他流控进行解码。
微软在NBC2008年的北京奥运会网站上创建了一个基于HTTP的自适应流控的原型。为了赶上项目的快速开发的进度表,当时项目实现的时候非常直接了当。NBC使用Digital Rapids和Anystream编码器为每个视频源生成了多个不同码率和分辨率的Windows Media Video(WMV)文件。编码器没有使用任何别的新的编码戏法,只不过是更严格遵守编码指导(关闭的GOP,固定长度GOP,VC-1入口协议头,等等),这样就保证了同一视频在不同码率的文件之间帧完全对齐。这些WMV文件由一个后期处理工具被物理分成每两秒一个流控块的WMV文件。最后把这些流控块文件上传到CDN(内容分发网络)WEB服务器上,做了一个可以下载和顺序播放这些流控块的SILVERLIGHT播放器。