浅谈RTSP和RTMP流媒体协议

流媒体协议一览

流媒体协议是服务器与客户端之间通信遵循的规定,当前网络上主要的流媒体协议如下表所示:

名称 推出机构 传输层协议 客户端 目前使用领域
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个通道上传输命令和数据

综合评价:

  1. 由于是基于TCP协议传输,所以RTMP不会丢包,但会有积累延迟:当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。这个的对策就是,当客户端的缓冲区很大,就断开重连。
  2. 由于互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。

RTSP,实时流传输协议

  • 是应用层协议
  • 是流媒体协议
  • 是共有协议,有专门机构做维护。
  • 基于UDP协议传输
  • 一般传输ts,mp4格式流
  • 一般需要2~3个通道上传输,命令和数据通道分离。

综合评价:

  1. RTSP+RTP经常用于IPTV领域。因为其采用UDP传输视音频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。
  2. 由于互联网网络环境的不稳定性,RTSP+RTP很少用于互联网视音频传输。互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中,这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。