以下内容来源于网络,如有偏差,敬请指出

1.为什么会出现流媒体这种媒体传送方式?

在网络上传输音/视频(A/V)等多媒体信息,在流媒体这个概念出现之前都是先下载下来再播放的,这样对于小一点的A/V文件还好,但是对于较大的A/V文件,这个下载过程就会耗费很长的时间,流媒体的出现就是为了解决这个问题(当然也不只是为了解决这个问题)。

流媒体,又叫流式媒体,是边传边播的媒体,是多媒体的一种。边传边播是指媒体提供商在网络上传输媒体的“同时”,用户一边不断地接收并观看或收听被传输的媒体。“流”媒体的“流”指的是这种媒体的传输方式(流的方式),而并不是指媒体本身。

2.流媒体关键技术介绍

如果我们查百度百科关于流媒体的解释,会看到这样的内容(这些内容也大量充斥在各种技术博客中):流式传输是实现流媒体的关键技术,流式传输又可以分为顺序流式传输实时流式传输,这里按我的理解补充一下:

  • 顺序流式传输

顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,也就是所谓的边下载边播放;顺序流式传输不能根据用户连接的速度(带宽网速)调整传输速度,它会完全利用已有的带宽;顺序流式传输不适合长片段和有随机访问要求的视频,所以当你拖动播放进度条快进时,必须要等它把之前的内容下载下来才行。标准的HTTP服务器(如tomcat、nginx等把视频文件放到可以访问的资源路径下)可发送这种形式的文件,也不需要其他特殊协议,它经常被称作HTTP流式传输。

  • 实时流式传输

实时流式传输指保证媒体信号带宽与网络连接匹配,即可以控制传输速率。实时流与HTTP流式传输不同,他需要专用的流媒体服务器传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。这里的实时并不仅仅指直播这种边录制边发送媒体传输形式,也包括视频网站可以随机访问视频任意时间点,而不用等待之前的视频内容全部下载完成。

如何区分顺序/实时流式传输: 一般说来,如视频为实时广播,或使用流式传输媒体服务器,或应用如RTSP的实时协议,即为实时流式传输。如使用HTTP服务器,文件即通过顺序流发送。

3. 流媒体技术实现细节

对于顺序流式传输技术实现比较简单,因为它不需要搭建任何专用的流媒体服务器,在万维网服务器中,除了真正的音频/视频文件外,还增加了一个元文件((metafile)。所谓元文件(请注意,不是源文件)就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息(视频长度等)。图8-5说明了使用元文件下载音频/视频文件的几个步骤。



对于实时流式传输来说,为了更好地提供播放流式音频/视频文件的服务,现在最为流行的做法就是使用两个分开的服务器。如图8-6所示,现在使用一个普通的万维网服务器,和另一个媒体播放器(media server)。媒体服务器与普通的万维网服务器的最大区别就是,媒体服务器是专门为播放流式音频/视频文件而设计的,因此能够更加有效地为用户提供播放流式多媒体文件的服务。因此媒体服务器也常被称为流式服务器((streaming server)。下面我们介绍其工作原理。如图8-6所示:


在用户端的媒体播放器与媒体服务器的关系是客户与服务器的关系。与图8-5不同的是,现在媒体播放器不是向万维网服务器而是向媒体服务器请求音频/视频文件。媒体服务器和媒体播放器之间采用另外的协议进行交互(协议可以是TCP或者是UDP,它们各有千秋)。

  这其中能够对视频实现实时的控制,离不开一个重要的协议——实时流式协议RTSP(Real-Time Streaming Protocol),RTSP是为了给流式过程增加更多的功能而设计的协议。RTSP本身并不传送数据,而仅仅是使媒体播放器能够控制多媒体流的传送(有点像文件传送协议FTP有一个控制信道),因此RTSP又称为带外协议(out-of-band protocol) 。图8-8表示使用RTSP的媒体服务器的工作过程:



4. 补充

尽管html5拥有可以播放视频的video标签,但还是需要后台的媒体服务器进行适配才能正常播放,否则只能根据后台流媒体服务器搭建的方式选择合适的媒体播放器等。