视频图像传输有以下几个特点:1) 要求传输延时小,实时性高; 2) 传输流量大,要求传输效率高;3) 在一定程序上允许传输错误或数据丢失。根据以上特点知,使用UDP协议来传输视频相对TCP协议更理想。
UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议。正式通信前不必与对方先建立连接,直接向接收方发送数据,是一种不可靠的通信协议。正是由于UDP协议不关心网络数据传输的一系列状态,使得UDP协议在数据传输过程中节省了大量的网络状态确认和数据确认的系统资源消耗,大大提高UDP协议的传输效率,传输速度快。TCP(Transport ControlProtocol)协议是面向连接的传输协议,通信前需先建立连接,传输时延较大,TCP的确认和重发机制、流量控制机制虽能保证数据的可靠传输,但处理过程复杂,效率不高,对于音频和视频流,频繁的确认和重传无法保证数据的实时传送,所以相对不适合视频图像的传输。
用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。
之所以以前对这几个有点分不清,是因为CTC标准里没有对RTCP进行要求,因此在标准RTSP的代码中没有看到相关的部分。而在私有RTSP的代码中,有关控制、同步等,是在RTP Header中做扩展定义实现的。
另外,RFC3550可以看作是RFC1889的升级文档,只看RFC3550即可。
- RTP:实时传输协议(Real-time Transport Protocol)
- RTP/RTCP是实际传输数据的协议
- RTP传输音频/视频数据,如果是PLAY,Server发送到Client端,如果是RECORD,可以由Client发送到Server
- 整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议(即RTCP)
- RTSP:实时流协议(Real Time Streaming Protocol,RTSP)
- RTSP的请求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顾名思义可以知道起对话和控制作用
- RTSP的对话过程中SETUP可以确定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以开始或者停止RTP的发送,等等
- RTCP:
- RTP/RTCP是实际传输数据的协议 <