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的抓包流程:

EasyPlayer RTSP播放器

vlc的抓包流程:

EasyPlayer RTSP播放器

从上面两个抓包流程来看,EasyPlayer前后卡了两次,都是在认证阶段,而且vlc整个的播放OPTION/DESCRIBE/SETUP/PLAY是在同一秒内完成的,不拖泥带水,非常快,我们从上面两幅图找出来了差异:

  • vlc的播放uri是不带用户名密码的,是纯粹的播放路径,而且EasyPlayer的播放路径是带了用户名密码的;

  • vlc的播放是从OPTIONS发起的,而EasyPlayer是从DESCRIBE发起的;

验证与结论

结果如抓包推测,在大华、以及海康某些摄像机,如果播放URL中携带了用户名密码,是无法正常跑通流程的,那么为什么vlc和EasyPlayer都是输入相同的RTSP地址,但是播放的却不一样呢?因为VLC经过长期的验证,做出了几点,保证了最大兼容:

  1. RTSP的流程发起从OPTIONS开始;
  2. 在用户输入带用户名密码的RTSP地址(rtsp://user:pwd@xxx)后,先做用户名密码的拆分,再在RTSP流程中将用户名密码传入;

基于以上两点,EasyPlayer下一个版本发布就会按照这种最大兼容的方案来归档发布!

关于EasyPlayer

EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveXnpAPI Web插件)、Android平台,iOS平台,视频支持H.264H.265MPEG4MJPEG,音频支持G711AG711UG726AAC,支持RTSP over TCP/UDP,支持硬解码,是一套极佳的RTSP流播放组件;

EasyPlayer Pro版支持RTSP、RTMP、HTTP、HLS等各种流媒体协议播放,稳定、高效、可靠,支持Windows、Android、iOS!

Github:https://github.com/EasyDarwin/EasyPlayer

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

posted @ 2017-11-06 22:45  Babosa|EasyDarwin  阅读(188)  评论(0编辑  收藏  举报