流媒体协议一览
流媒体协议是服务器与客户端之间通信遵循的规定,当前网络上主要的流媒体协议如下表所示:
名称 | 推出机构 | 传输层协议 | 客户端 | 目前使用领域 |
---|---|---|---|---|
RTSP+RTP | IETF | UDP | VLC, WMP | IPTV |
RTMP | Adobe Inc. | TCP | Flash | 互联网直播 |
RTMFP | Adobe Inc. | UDP | Flash | 互联网直播 |
MMS | Microsoft Inc. | TCP/UDP | WMP | 互联网直播+点播 |
HTTP | WWW+IETF | TCP | Flash | 互联网点播 |
RTMP协议简介
RTMP,全称Real Time Messaging Protocol,实时消息传输协议,是TCP/IP协议体系中的一个应用层协议,该协议基于TCP传输,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。
RTP/RTCP协议简介
RTP:实时传输协议;RTCP:实时传输控制协议。
RTP被定义为传输音频、视频、模拟数据等实时数据的传输协议,与传统的注重的高可靠的数据传输的运输层协议相比,它更加侧重的数据传输的实时性。此协议提供的服务包括数据顺序号、时间标记、传输控制等。
RTP通常与传输控制协议RTCP一起工作,RTP只负责实时数据的传输,RTCP负责对RTP的通信和会话进行带外管理(如流量控制、拥塞控制、会话源管理等)。
RTP位于传输层之上,应用层之下,默认是基于UDP传输数据。具体传输流程:实时语音、视频数据经过模数转换和压缩编码处理后,先送给RTP封装成为RTP数据单元,RTP数据单元被封装为UDP数据报,然后再向下递交给IP封装为IP数据包。
RTP分组只包含RTP数据,而控制是由配套协议RTCP提供。
RTSP协议简介
RTSP,全称Real Time Streaming Protocol,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。
RTSP在体系结构上位于RTP/RTCP之上,它使用UDP完成数据传输。
HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;而使用RTSP时,客户机和服务器都可以发出请求,所以RTSP可以是双向的。
RTMP和RTSP对比
RTMP,实时消息传输协议
- 是应用层协议
- 是流媒体协议
- 基于TCP协议传输
- 是Adobe的私有协议,未完全公开。
- 依赖flash player作为播放器
- 一般传输flv,f4v格式流
- 一般在TCP1个通道上传输命令和数据
综合评价:
- 由于是基于TCP协议传输,所以RTMP不会丢包,但会有积累延迟:当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。这个的对策就是,当客户端的缓冲区很大,就断开重连。
- 由于互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。
RTSP,实时流传输协议
- 是应用层协议
- 是流媒体协议
- 是共有协议,有专门机构做维护。
- 基于UDP协议传输
- 一般传输ts,mp4格式流
- 一般需要2~3个通道上传输,命令和数据通道分离。
综合评价:
- RTSP+RTP经常用于IPTV领域。因为其采用UDP传输视音频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。
- 由于互联网网络环境的不稳定性,RTSP+RTP很少用于互联网视音频传输。互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中,这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。