流式存储音频/视频
1.1.下载文件的传统方法:
传统的浏览器从服务器下载音频/视频文件:
① 用户从客户机(client machine)的浏览器上用 HTTP 协议向服务器请求下载某个音频/视频文件。
② 服务器如有此文件就发送给浏览器。在响应报文中就装有用户所要的音频/视频文件。整个下载过程可能会花费很长的时间。
③ 当浏览器完全收下这个文件后,就可以传送给自己机器上的媒体播放器进行解压缩,然后播放。
1.2.具有元文件的万维网服务器
元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。
① 浏览器用户使用 HTTP 的 GET 报文接入到万维网服务器。这个超链指向一个元文件。这个元文件有实际的音频/视频文件的统一资源定位符 URL。
② 万维网服务器把该元文件装入 HTTP 响应报文的主体,发回给浏览器。
③ 客户机浏览器调用相关的媒体播放器,把提取出的元文件传送给媒体播放器。
④ 媒体播放器使用元文件中的 URL ,向万维网服务器发送 HTTP 请求报文,要求下载音频/视频文件。
⑤ 万维网服务器发送 HTTP 响应报文,把该音频/视频文件发送给媒体播放器。媒体播放器边下载边解压缩边播放。
1.3.媒体服务器
- 媒体服务器也称为流式服务器(streaming server) ,它支持流式音频和视频的传送。
- 媒体播放器与媒体服务器的关系是客户与服务器的关系。
- 媒体播放器不是向万维网服务器而是向媒体服务器请求音频/视频文件。
- 媒体服务器和媒体播放器之间采用另外的协议进行交互。
**使用媒体服务器 **
① ~③ 前三个步骤仍然和上一节的一样,区别就是后面两个步骤。
④ 媒体播放器使用元文件中的 URL 接入到媒体服务器,请求下载浏览器所请求的音频/视频文件。下载可以借助于使用 UDP 的任何协议,例如使用实时运输协议 RTP。
⑤ 媒体服务器给出响应,把该音频/视频文件发送给媒体播放器。媒体播放器在迟延了若干秒后,以流的形式边下载边解压缩边播放。
流媒体服务器应用二:现场直播
除了上述所讲的用户借助流媒体服务器播放音频视频之外,还可以使用流媒体服务器实现会议或球赛的现场直播。
-
如图,通过摄像机拍摄得到实况数字视频,摄像头的一端连接计算机,在计算机上安装编码器软件,编码器软件能将摄像头采集到的视频进行编码,得到各种分辨率和格式的视频文件。
-
编码完成后计算机把视频文件发送到流媒体服务器上,然后,最终用户就可以通过访问流媒体服务器来观看现场直播。
-
用户观看的现场直播会因网络带宽不同而存在不同的时延。
-
可以看到,编码器软件只给流媒体服务器发送一份视频文件,而流媒体服务器作为发布点则根据用户数量发送多份视频文件,所以流媒体服务器的带宽成为了限制多少用户同时在线看直播的瓶颈。
-
另外,拥有编码器软件的计算机可以给多个流媒体服务器提供视频流,实现流媒体服务器的负载分摊,为更多用户提供视频直播服务。
1.4.现实案例
公司的领导在城市A给城市B和C的分公司员工开会,如图所示:
- 城市A、B和C三个局域网通过Internet连接在一起,公司领导通过摄像机和计算机的编码软件录制视频。
- 如果把流媒体服务器设置在城市A,那么城市B和C的员工想要观看领导讲话就需要连接到城市A的流媒体服务器上,并且有多少个员工观看,城市A的流媒体服务器就需要发送多少份视频文件。
- 假设城市B有50名员工,城市C有60名员工,那么城市A的流媒体服务器就要通过Internet分别给城市B和C发送50和60份视频文件,这样网络的带宽明显不够,直接影响直播效果。解决办法如下图所示:
- 分别在城市B和C各部署一个流媒体服务器,那么城市A负责编码视频文件的计算机只需要通过Internet给城市B和C各发送一份视频文件即可。
- 城市B和C的员工再通过访问本城市的流媒体服务器即可观看直播,这样便解决了带宽问题。
通过以上例子可以知道:如果流媒体服务器作为现场直播的视频音频流的话,可以当作是一个视频音频的分发点。