[RTSP]RTSP流媒体(实时流协议)分析(2)
RTSP的实现
RTSP功能实现结构如下图所示。
RTSP在流媒体传输过程中,仅仅为双方建立连接,并不具备任何智能,也就不能很好地应付难以预料的网络状态。因此,必须在它原有功能的基础上,进行改进。
1、初始化
在建立连接之前,客户端应向服务器提出测试请求,即要求服务器向客户端发送相应的测试数据包。初始化的目的,是为了获取客户端和服务器之间的一些网络参数,估测基本网络状况,并以此选择相应的网络传输协议,使客户端获得最佳观看效果。
接到这个请求之后,服务器将根据自身情况进行如下测试:
● 利用同客户端建立的RTSP通道,采用TCP协议,下发测试数据包。
● 采用UDP协议,向客户端下发测试数据包。
测试数据包仅做测试用,上面带有相应的时间和顺序信息,其内部数据并无任何意义。
需要向RTSP增加一个新的方法TEST,以支持这种传输前的测试工作。
2、TCP传输
如果在TCP测试中,客户端反馈良好,即丢包率在可承受范围之内,并且在规定时间内到达,那么就认为客户端同服务器之间的 网络状况良好, 可以采用RTP over TCP的方式发送数据。由于TCP没有丢包(其自身具有重传机制),网络状况又属于良好,因此客户端将有较高的视听享受。
当子网内存在防火墙时,就需要采用RTSP附加数据传输方式。即把音视频数据直接打包,在RTSP通信信道内传输。这种传输方式也存在一定的问题:
● 传输过程中,只是把音视频文件当成一个普通文件来处理,而没有考虑到它的音视频特性,不利于以后的扩展。
● 音频与视频文件没有分离,不利于某些特殊需求的场合。例如,客户端需要对音、视频做不同的处理。
● 客户端的反馈和RTSP的控制信息也是通过同一条RTSP信道传送,因此控制效率不高。
因此,一般情况下,都默认使用RTP over TCP的方式发送数据。
3、UDP传输
如果在TCP测试中,客户端的反馈存在比较大的问题,即网络情况不理想,就应该考虑进行UDP测试。
目前初步采取的措施,在服务器端准备了两种码率的视频文件——高码率和低码率。
收到客户端的TEST方法后,将采用UDP协议下发测试包。采取的策略是每间隔2秒,下发一个1500字节的UDP数据 包。当丢包率处于一定范围(75%~85%)之内,就认为客户端的网络状况基本良好,可以下发高码率的电影文件;否则,认为测试不成功,由于网络状况的限 制,仅对客户端下发低码率的电影文件。
在基于UDP的播放过程中,可能会出现轻微的马赛克,这是完全可以接受的。这些马赛克出现的主要原因是:
● 不可靠连接造成的网络丢包,为客户端被动丢包。
● 高质量文件(DVD->MP4)的高数据量,使得客户端解码线程和显示线程出现拥塞,从而出现客户端主动丢包。
但从整体而言,UDP传输消耗的带宽,要比TCP小许多。在一般的视频点播要求下,使用基于UDP的传输线路,是完全可以满足要求的。
4、传输反馈
在传输过程中,主要采取的方式是RTP over TCP或RTP over UDP,因此,在RTP端口之外,还存在一个回传端口RTCP。
在服务器收到客户端的RTCP回传信息后,需要对其进行判断。如果客户端的丢包率、解码率等指标在一定限度之下,就认为目前传送的视频文件可令客户端获得最大程度的音视频享受;否则,考虑改为传输更低码率的视频文件或放弃这次RTSP会话,以避免更大范围的拥塞。
热门文章推荐
- [rtsp]设置海康配置DDNS远程访问的用户手册(组图说明)
- [FFmpeg]FFmpeg实现监控摄像头的RTSP协议转RTMP协议直播
- [海康]海康网络摄像机激活功能图文教程
- [Rtsp]RTSP对实时摄像头视频流进行转换(FFmpeg+FFserver)
- [RTSP]海康家用摄像头wifi设置指南(组图说明)
- [Rtsp]海康网络摄像头基于RTSP协议的windows平台监控
- 海康客户端软件安装与使用教程ivms 4200(ivms 4200 客户端)图文
- [rtsp]IPC网络摄像头常见传输协议(rtsp协议,udp协议)介绍