EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见
问题反馈
最近在线上遇到一位老朋友咨询关于EasyPlayer播放器的事情,大概现象就是分别用EasyPlayer和vlc播放大华摄像机的RTSP流,流地址是:rtsp://admin:admin12345@192.168.1.253:554/cam/realmonitor?channel=1&subtype=0,用EasyPlayer播放这个地址会在两次RTSP DESCRIBE之间间隔大概10s,才会继续发送下一次请求,而且vlc整个流程都很快很顺利,在之前我们也遇到过这种情况,vlc几乎能兼容全部的摄像机,这是为什么呢?
抓包排查
我们分配抓了EasyPlayer RTSP播放流程的抓拍和vlc播放流程的抓包:
注:我们都是传入相同的RTSP播放地址给播放器的!
EasyPlayer的抓包流程:
vlc的抓包流程:
从上面两个抓包流程来看,EasyPlayer前后卡了两次,都是在认证阶段,而且vlc整个的播放OPTION/DESCRIBE/SETUP/PLAY是在同一秒内完成的,不拖泥带水,非常快,我们从上面两幅图找出来了差异:
vlc的播放uri是不带用户名密码的,是纯粹的播放路径,而且EasyPlayer的播放路径是带了用户名密码的;
vlc的播放是从OPTIONS发起的,而EasyPlayer是从DESCRIBE发起的;
验证与结论
结果如抓包推测,在大华、以及海康某些摄像机,如果播放URL中携带了用户名密码,是无法正常跑通流程的,那么为什么vlc和EasyPlayer都是输入相同的RTSP地址,但是播放的却不一样呢?因为VLC经过长期的验证,做出了几点,保证了最大兼容:
- RTSP的流程发起从OPTIONS开始;
- 在用户输入带用户名密码的RTSP地址(rtsp://user:pwd@xxx)后,先做用户名密码的拆分,再在RTSP流程中将用户名密码传入;
基于以上两点,EasyPlayer下一个版本发布就会按照这种最大兼容的方案来归档发布!
关于EasyPlayer
EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,视频支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP,支持硬解码,是一套极佳的RTSP流播放组件;
EasyPlayer Pro版支持RTSP、RTMP、HTTP、HLS等各种流媒体协议播放,稳定、高效、可靠,支持Windows、Android、iOS!
Github:https://github.com/EasyDarwin/EasyPlayer
获取更多信息
Copyright © EasyDarwin.org 2012-2017