EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决
2023-09-14 08:59:58 时间
在之前的博客《EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见》中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意见修改了EasyPlayer播放器内核EasyRTSPClient中的url解析接口,果然,又有一家厂家的摄像机出现了url兼容的问题:
究其原因:包括大厂家海康的某些IPC型号都会有这个问题,程序兼容性的问题,如果没有严格按照他的正则来输入url地址,都会默认成主码流的播放地址,也就是上图中所示的无论播放什么,都会是播放成主码流,而vlc不会,那么就是我们说到的vlc对url的兼容了!
EasyPlayer修改方法
EasyPlayer的核心EasyRTSPClient修改了对url的解析,直接将携带用户名密码的url地址分别拆解成url,username,password三个参数,传入底层,这样就能做到完全的兼容了:
char szURL[512] = {0};
char szUsername[64] = {0};
char szPassword[64] = {0};
string finalRTSPAddr;
string user;
string password;
string address;
int port;
string path;
int iRet = ParsingRTSPURL(_url, user, password, address, port, path);
string strSourceUrl;
if(iRet > 0 && (!user.empty() || !password.empty()))
{
sprintf(szURL, "rtsp://%s:%d/%s", address.c_str(), port, path.c_str());
sprintf(szUsername, "%s", user.c_str());
sprintf(szPassword, "%s", password.c_str());
}
else
{
strcpy(szURL, _url);
}
if( _username && strlen(_username) > 0 && _password && strlen(_password))
{
sprintf(szUsername, "%s", _username);
sprintf(szPassword, "%s", _password);
}
printf("\n\nURL: %s\nUsername: %s\nPassword: %s\n\n\n", szURL, szUsername, szPassword);
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!
获取更多信息
Copyright © EasyDarwin.org 2012-2017
相关文章
- [笨木头FireFly 02]入门篇2_客户端发送请求,服务器处理请求
- javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——EmpService层
- 《转载》脚本实现从客户端服务端HTTP请求快速分析
- Asp.Net Web API 2第三课——.NET客户端调用Web API
- Oracle 客户端连接时报ORA-01019错误总结
- Java客户端通过Http发送POST请求上传文件到web服务器
- ZooKeeper源码研究系列(2)客户端创建连接过程分析
- C# 视频监控系列(3):客户端——连接服务器并预览
- zookeeper的客户端常用操作
- docker客户端连接远程docker服务端(export方式)
- hbase学习(一)hbase单机部署和java客户端连接单机hbase
- 解决32位plsql客户端连接不64位Oracle11g上数据库
- Atitit webdav 原理详细 概念补充 2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。 穿墙 HTTPS传送数据 使用一个TCP连接传送所有文件 方便的客户端工
- TCP服务器端和客户端建立连接 - 服务器端的回调处理
- 如何处理TCPSocket客户端与服务器端连接中断后的异常
- WebSocket连接里客户端和服务器端的Socket ID
- 如何处理TCPSocket客户端与服务器端连接中断后的异常
- Node.js: node-redis.js客户端
- HTTP客户端连接,选择HttpClient还是OkHttp?
- 腾讯QQ的开发分客户端软件和服务器端软件
- 按照filebeat windows客户端
- Linux系统之网络客户端工具
- Synergy报错 grabbed clipboard 和 disconnected 连接不上客户端
- mysql只安装客户端 连接
- redis客户端连接过多不释放
- 本地客户端 dbeaver-连接HIVE库
- impala客户端连接
- 【安装包】MySQL客户端
- a5.ansible 生产实战案例 -- chrony客户端playbook
- Linux服务器收到SYN请求包没有回应ACK导致客户端无法建立TCP连接(文中的文章是转载的)