• 关于EasyRTSPClient、EasyPlayer RTSP流重连问题的解释


    EasyPlayer、EasyRTSPClient是如何设计重连的

    首先大概解释一下EasyRTSPClient与EasyPlayer间的关系:EasyRTSPClient是一个专门用于与RTSP流媒体服务器交互的RTSPClient框架,类似于live555的OpenRTSP功能,他能够很好很兼容地实现RTSP OPTIONS、SETUP、PLAY、TEARDOWN等功能,还能进行数据回调的解析和网络事件的回调,更重要的是EasyRTSPClient非常稳定,用于工业级项目3年多,收到了很多用户发来的好评!

    EasyPlayer的底层RTSP交互过程全部采用的是libEasyRTSPClient来实现的,这样EasyPlayer只需要专注于获取到的数据的处理过程,而且不需要关注其他的网络协议部分的功能,EasyPlayer只需要调用EasyRTSPClient的相关接口和回调处理,就能控制整个RTSP播放流程的运转了!

    重点说一下EasyRTSPClient是如何进行RTSP重连过程的,EasyRTSPClient采用的是线程控制的,内部RTSP采用的是一个独立线程运行获取数据,再在获取到数据后,进行解析回调,外部线程进行时间统计,当超时时间内没有任何视频或者音频数据回调,外部线程会主动干涉内部RTSP线程,重新goto到RTSP初始状态,重新开始连接RTSP Server服务器;

    上层对RTSP重连的多种控制方法

    我们先观察EasyRTSPClient的事件回调:

    else if (_frameType == EASY_SDK_EVENT_FRAME_FLAG)//回调连接状态事件
    {
        // EasyRTSPClient开始进行连接,建立EasyRTSPClient连接线程
        if (NULL == _pBuf && NULL == _frameInfo)
        {
            printf("Connecting:%s ...
    ", fRTSPURL);
        }
    
        // EasyRTSPClient RTSPClient连接错误,错误码通过EasyRTSP_GetErrCode()接口获取,比如404
        else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_ERROR)
        {
            printf("Error:%s:%d :%s ...
    ", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle), _pBuf?_pBuf:"null" );
        }
    
        // EasyRTSPClient连接线程退出,此时上层应该停止相关调用,复位连接按钮等状态
        else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_EXIT)
        {
            printf("Exit:%s,Error:%d ...
    ", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle));
        }
    }
    

    EasyRTSPClient会在几种情况下回调出状态:

    • RTSPClient开始连接的时候;
    • RTSPClient连接发送错误的时候会立即反馈回调;
    • RTSPClient连接线程退出的时候;

    EasyRTSPClient自身有重连功能,如果用户不想麻烦处理重连的过程,完全可以交由EasyRTSPClient内部处理,如果用户想接管重连过程,主要是处理 EASY_SDK_EVENT_CODEC_ERROREASY_SDK_EVENT_CODEC_EXIT 两种回调;

    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

  • 相关阅读:
    phpmailer发送邮件,可以带附件
    poj 3370 鸽笼原理知识小结
    yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)
    兄弟单词查询
    asp.net mvc3 利用Ajax实现局部刷新
    eclipse 找不到application选项
    ECharts一个强大的商业产品图表库
    多校训练hdu --Nice boat(线段树,都是泪)
    [外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。
    ubuntu重新启动网卡
  • 原文地址:https://www.cnblogs.com/babosa/p/9217713.html
Copyright © 2020-2023  润新知