网络协议 (一) —— RTSP、RTMP、HTTP协议的区别

RTSP和RTMP是2个不同的网络传输协议,RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,而RTMP是Real Time Messaging Protocol(实时消息传输协议),网络摄像机的厂家,可根据自身的需求,采用不同协议来处理。目前多数网络摄像机支持RTSP、ONVIF等通用的协议,而支持RTMP比较少。

RTMP是Real Time Messaging Protocol(实时消息传输协议)

它是Adobe Systems公司为Flash播放器和服务器之间音频、视频、数据传输开发的协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT、RTMPS、RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash、AIR平台和支持RTMP协议的流媒体、交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server、Ultrant Media Server、red5等。
这是一个标准的,未加密的实时消息传递协议,默认端口是1935,如果未指定连接端口,那么flash客户端会尝试连接其他端口,其尝试连接顺序按照下列顺序依次连接:1935、443、80(RTMP), 80(RTMPT).

RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议

该协议是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。

RTSP、RTMP、HTTP都是可以做视频直播或者点播,但一般做直播用RTSP、RTMP做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了,下面我们就来看看他们的作用到底有何不同。

共同点:

1:RTSP、RTMP、HTTP都是在应用应用层。
2: 理论上RTSP、RTMP、HTTP都可以做直播和点播,但一般做直播用RTSP、RTMP做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了。

区别:

1:HTTP: 即超文本传送协议(ftp即文件传输协议)。
HTTP:(Real Time Streaming Protocol),实时流传输协议。
HTTP全称Routing Table Maintenance Protocol(路由选择表维护协议)。

2:HTTP将所有的数据作为文件做处理。http协议不是流媒体协议。
RTMP和RTSP协议是流媒体协议。

3:RTMP协议是Adobe的私有协议,未完全公开,RTSP协议和HTTP协议是共有协议,并有专门机构做维护。

4:RTMP协议一般传输的是flv,f4v格式流。RTSP协议一般传输的是ts,mp4格式的流。HTTP没有特定的流。

5:RTSP传输一般需要2-3个通道,命令和数据通道分离,HTTP和RTMP一般在TCP一个通道上传输命令和数据。
RTSP实时流协议 作为一个应用层协议,RTSP提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP是一个流媒体表示协议,主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与RTP间的交互操作(RFC2326)。

扩展

AMF

AMF(是Action Message Format的缩写)是在flash和flex中与远程服务端交换数据的一种格式.它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时,通常都采用这种格式。AMF 1 诞生于Flash Player6,发展到现在已经变成了了AMF3

RTMPT

此协建立在HTTP协议之上,是通过HTTP封装后的RTMP协议,默认端口80. 4. RTMPS RTMP的另一个变种,此协议是通过SSL加密的RTMP协议,为数据通讯提供安全支持。SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层对网络连接进行加密。默认端口443。

RTMPS

RTMPS类似RTMPT,但使用的是HTTPS连接。

RTMPE

RTMPE是一个加密版本的RTMP,和RTMPS不同的是RTMPE不采用SSL加密,RTMPE加密快于SSL,并且不需要认证管理。如果没有指定RTMPE端口,Flash播放器将像RTMP协议一样依次扫描下列端口:1935(RTMPE) 443(RTMPE) 80(RTMPE) 80(RTMPTE)

RTMPTE

RTMPTE 这个协议是一个通过加密通道连接的RTMPE,默认端口80.

RTMFP

RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。此方案提升了目前Flash Player在网络交互方面的体验。RTMFP将减少直播、实时聊天方案的带宽消耗,例如音视频聊天和多人游戏。因为RTMFP的数据在终端用户之间流动,而不是和服务器,所以此方案很适合于大范围的部署。RTMFP因为采用了UDP也提升了传送的速度。UDP是Internet上一种更有效传送音频视频的方法,虽然会有一些丢包,错包。RTMFP有两个特性可以帮助解决一些连接错误。快速连接恢复:连接在以外情况下将快速恢复。例如,一个无线连接掉线了,一旦重连,他将迅速拥有所有的传送能力。

IP动态化

一个活动的网络会话将以PEER来标识,即使他变了一个IP,也可以保持原来的会话。例如,一个笔记本在一个无线网络获得了一个新IP地址,他将立刻继续刚才的会话。   RTMP和RTMFP之间的不同,最根本的是他们在网络上采用的协议。RTMFP是基于UDP的,RTMP是基于TCP的。UDP在传送直播数据方面比TCP还是有较多优势的,比如减少延时,对丢包的容忍,虽然在可靠性上有所损失。RTMFP支持Flash Player直接发送数据给另一个,而不经过Server,服务端连接将被用来初始化并交互一些客户端之间的信息,也可用来进行服务端调用或者作为进入其他系统的网关。

ONVIF

ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛)ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。  
ONVIF规范中设备管理和控制部分所定义的接口均以Web Services 的形式提供。

ONVIF = 服务端 + 客户端 =(Web Services + RTSP)+ 客户端 = ((WSDL + SOAP) + RTSP) + 客户端

ONVIF规范的网络层次结构:


网络协议 (一) —— RTSP、RTMP、HTTP协议的区别_第1张图片
ONVIF规范的网络层次结构:.png

ONVIF接口被划分为不同模块,包括:设备发现、设备管理、设备输入输出服务、图像配置、媒体配置、实时流媒体、接收端配置、显示服务、事件处理、PTZ控制等。

参考

  • ONVIF之播放音视频
  • ONVIF协议网络摄像机
  • ONVIF官网
  • FFmpeg库官网
  • SDL库官网
  • ONVIF协议网络摄像机(IPC)客户端程序开发(12):读取音视频流
  • 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)

你可能感兴趣的:(网络协议 (一) —— RTSP、RTMP、HTTP协议的区别)