这是我参与更文挑战的第13天,活动详情查看: 更文挑战
音视频服务类型
流式存储音频/视频 - 边下载边播放
流式实况音频/视频 - 边录制边发送
交互式音频/视频 - 实时交互式通信
下载音视频步骤
- 用户在浏览器上用HTTP协议向服务器请求下载某个音频/视频文件
- 服务器如有此文件就发送给浏览器. 会花费很长时间
- 当浏览器完全收下这个文件后, 就可以用媒体播放器进行解压缩, 然后播放
元文件下载音视频
- 浏览器用户使用HTTP的GET报文接入服务器. 这个超链指向一个元文件. 这个元文件有实际的音频/视频文件的统一资源定位符URL
- 服务器把该元文件装入HTTP响应报文的主体, 发回给浏览器
- 浏览器调用相关的媒体播放器, 把提取出的元文件传送给媒体播放器
- 媒体播放器使用元文件中的URL, 向服务器发送HTTP请求报文, 要求下载音频/视频文件
- 服务器发送HTTP响应报文, 把该音频/视频文件发送给媒体播放器. 媒体播放器边下载边解压缩边播放
媒体服务器
为了更好的提供流式音视频文件服务, 现在使用两个分开的服务器, 一个是普通的Web服务器, 一个是媒体服务器
媒体服务器也称为流式服务器, 支持流式音频和视频的传送
媒体播放器不是向Web服务器而是向媒体服务器请求音频/视频文件
媒体服务器和媒体播放器之间用另外的协议进行交互
UDP传送音视频文件的缺点
- 由于网络情况多变, 播放器很难始终按规定的速率播放
- UDP分组有可能会被防火墙阻拦掉
- 使用UDP传送流式媒体文件时, 如果用户想要控制媒体的播放, 还需要另外的协议RTP和RTSP
TCP传送流式音视频的步骤
-
用户使用HTTP获取存储在Web服务器中的音视频文件, 然后把音视频文件传送到TCP发送缓存中. 若发送缓存已满, 就暂停止发送
-
从TCP发送缓存通过互联网向客户机中的TCP接收缓存传送视频数据, 直到接收缓存被填满
-
从TCP接收缓存把音视频数据再传送到应用程序缓存(即流媒体播放器的缓存). 当这个缓存中的视频数据存储到一定程序时, 就开始播放. 一般不超过1分钟
-
在播放时, 媒体播放器周期性的把视频数据按帧读出, 经解压缩后, 把视频节目显示在用户屏幕上
RTSP - 实时流式媒体
RTSP本身不传送数据, 是一个多媒体控制协议
使用C/S方式工作, 用来使用户在播放从互联网下载的实时数据时能进行控制. 又称为"互联网录像机遥控协议"
要实现控制功能, 不仅要有协议, 还要有媒体播放器和媒体服务器
RTSP特点
RTSP是有状态的协议. 它记录客户机所处于的状态(初始化状态, 播放状态或暂停状态)
RTSP控制分组即可在TCP上传送, 又可在UDP上传送
RTSP没有定义音视频的压缩文案, 也没有规定音视频在网络中传送时应如何封装在分组中
RTSP没有规定音视频流在媒体播放器中应如何缓存
使用RTSP媒体服务器的工作过程
- 浏览器向服务器请求音视频文件
- 服务器从浏览器发送携带有元文件的响应
- 浏览器把收到的元文件传送给媒体播放器
- RTSP客户与媒体服务器的RTSP服务器建立连接
- RTSP服务器发送响应RESPONSE报文
- RTSP客户发送PLAY报文, 开始下载音视频文件
- RTSP服务器发送响应RESPONSE报文
- RTSP客户发送TEARDOWN报文断开连接
- RTSP服务器发送响应RESPONSE报文