背景介绍
EasyPlayer实现了对遵循标准流媒体码流协议进行实时播放以及码流录制,在流的播放速度以及画质的解码显示上均做了大量深度的优化。支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台。
EasyPlayer和vlc播放RTSP流不兼容问题
发现问题
之前有用户咨询关于EasyPlayer播放器的兼容问题,具体是分别用EasyPlayer和vlc播放大华摄像机的RTSP流,流地址是:rtsp://admin:admin12345@192.168.1.253:554/cam/realmonitor?channel=1&subtype=0。用EasyPlayer播放这个地址会在两次RTSP DESCRIBE之间间隔大概10s,才会继续发送下一次请求,而且vlc整个流程都很快很顺利。
分析问题
我们用相同的RTSP播放地址传输给播放器,然后分别抓了EasyPlayer RTSP播放流程抓拍和vlc播放流程抓包。
EasyPlayer的抓包流程:
vlc的抓包流程:
根据抓包流程我们可以看出,EasyPlayer前后卡了两次,且都是在认证阶段,而vlc的播放OPTION/DESCRIBE/SETUP/PLAY是在同一秒内完成的。因此通过分析我们就能看出来差异所在:
1、vlc的播放uri是不带用户名密码的,为纯粹的播放路径,而EasyPlayer的播放路径是带用户名密码的;
2、vlc的播放是从OPTIONS发起的,而EasyPlayer是从DESCRIBE发起的。
问题解决
结果如抓包推测,在大华、以及海康某些摄像机,如果播放URL中携带了用户名密码,是无法正常进行流程的;而VL的RTSP的流程发起从OPTIONS开始;且在用户输入带用户名密码的RTSP地址(rtsp://user:pwd@xxx)后,先做用户名密码的拆分,再在RTSP流程中将用户名密码传入,如此便保证了最大兼容。
在EasyPlayer的新版本中,我们也已经规避了此类问题的再次出现,按照最大兼容的方案来归档发布。因此若仍然有用户出现此类问题,可以下载最新版本的EasyPlayer进行尝试,如还不能正常播放,可随时与我们沟通以便其他问题的排查。