天天看點

關于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 ...\n", fRTSPURL);
    }

    // EasyRTSPClient RTSPClient連接配接錯誤,錯誤碼通過EasyRTSP_GetErrCode()接口擷取,比如404
    else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_ERROR)
    {
        printf("Error:%s:%d :%s ...\n", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle), _pBuf?_pBuf:"null" );
    }

    // EasyRTSPClient連接配接線程退出,此時上層應該停止相關調用,複位連接配接按鈕等狀态
    else if (NULL != _frameInfo && _frameInfo->codec == EASY_SDK_EVENT_CODEC_EXIT)
    {
        printf("Exit:%s,Error:%d ...\n", fRTSPURL, EasyRTSP_GetErrCode(fRTSPHandle));
    }
}
           

EasyRTSPClient會在幾種情況下回調出狀态:

  • RTSPClient開始連接配接的時候;
  • RTSPClient連接配接發送錯誤的時候會立即回報回調;
  • RTSPClient連接配接線程退出的時候;

EasyRTSPClient自身有重連功能,如果使用者不想麻煩處理重連的過程,完全可以交由EasyRTSPClient内部處理,如果使用者想接管重連過程,主要是處理 EASY_SDK_EVENT_CODEC_ERROR 和 EASY_SDK_EVENT_CODEC_EXIT 兩種回調;

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!

擷取更多資訊

郵件:[email protected]

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

關于EasyRTSPClient、EasyPlayer RTSP流重連問題的解釋

繼續閱讀