zoukankan      html  css  js  c++  java
  • EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决

    在之前的博客《EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见》中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意见修改了EasyPlayer播放器内核EasyRTSPClient中的url解析接口,果然,又有一家厂家的摄像机出现了url兼容的问题:

    EasyPlayer RTSP播放器

    EasyPlayer RTSP播放器

    究其原因:包括大厂家海康的某些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("
    
    URL: %s
    Username: %s
    Password: %s
    
    
    ", szURL, szUsername, szPassword);

    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!

    获取更多信息

    邮件:support@easydarwin.org

    WEB:www.EasyDarwin.org

    Copyright © EasyDarwin.org 2012-2017

    EasyDarwin

  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/babosa/p/8206973.html
Copyright © 2011-2022 走看看