小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

EasyRTMP+EasyRTSPClient實(shí)現(xiàn)的多路(支持?jǐn)嗑€重連)RTSP轉(zhuǎn)RTMP直播推流工具

 文化龍鄉(xiāng) 2019-02-21

介紹

EasyRTMP是EasyDarwin團(tuán)隊(duì)開發(fā)的一套夸平臺(tái)的RTMP直播推送功能組件,內(nèi)部集成了包括:基本RTMP協(xié)議、斷線重連、異步推送、環(huán)形緩沖區(qū)、推送網(wǎng)絡(luò)擁塞自動(dòng)丟幀、緩沖區(qū)關(guān)鍵幀檢索、事件回調(diào)(斷線、音視頻數(shù)據(jù)回調(diào)),支持市面上絕大部分的RTMP流媒體服務(wù)器。詳見https://github.com/EasyDarwin/EasyRTMP
EasyRTSPClient是一套全平臺(tái)支持穩(wěn)定、易用、支持重連的RTSPClient工具。能夠拉取RTSP流地址并解析出視頻幀和音頻幀數(shù)據(jù)。詳見https://github.com/EasyDarwin/EasyRTSPClient。
兩者都是支持多路同時(shí)操作的SDK庫,這樣就方便了我們基于他們做多路RTSP流同時(shí)轉(zhuǎn)成RTMP進(jìn)行推送。

多路RTSP轉(zhuǎn)RTMP流實(shí)現(xiàn)

單路RTSP轉(zhuǎn)RTMP流可直接參考https://github.com/EasyDarwin/EasyRTMP中EasyRTMP_RTSP的Demo。
多路RTSP流轉(zhuǎn)RTMP時(shí),采用Config.ini配置文件,來配置每路輸入的RTSP地址,以及目標(biāo)RTMP地址。

[channel0]
rtsp=rtsp://admin:admin@192.168.66.222/11
rtmp=rtmp://www.easydss.com:10085/live/test1
option=1
[channel1]
rtsp=rtsp://admin:admin@192.168.66.222/22
rtmp=rtmp://www.easydss.com:10085/live/test2

初始化讀取Config.ini文件中的配置信息,保存到std::list中,然后為每個(gè)channel都起一路EasyRTSPClient來獲取RTSP數(shù)據(jù)。

std::list<_channel_info*>::iterator it;
    for(it = gChannelInfoList.begin(); it != gChannelInfoList.end(); it++)
    {
        _channel_info* pChannel = *it;
        pChannel->fLogHandle = TRACE_OpenLogFile(pChannel->fCfgInfo.channelName);

        TRACE_LOG(pChannel->fLogHandle, "channel[%d] rtsp addr : %s\n", pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.srcRtspAddr);
        TRACE_LOG(pChannel->fLogHandle, "channel[%d] rtmp addr : %s\n", pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.destRtmpAddr);

        EasyRTSP_Init(&(pChannel->fNVSHandle));

        if (NULL == pChannel->fNVSHandle)
        {
            TRACE_LOG(pChannel->fLogHandle, "%s rtsp init error. ret=%d!!!\n", pChannel->fCfgInfo.channelName , iret);
            continue;
        }
        unsigned int mediaType = EASY_SDK_VIDEO_FRAME_FLAG | EASY_SDK_AUDIO_FRAME_FLAG;

        EasyRTSP_SetCallback(pChannel->fNVSHandle, __RTSPSourceCallBack);

        EasyRTSP_OpenStream(pChannel->fNVSHandle, pChannel->fCfgInfo.channelId, pChannel->fCfgInfo.srcRtspAddr, EASY_RTP_OVER_TCP, mediaType, 0, 0, pChannel, 1000, 0, pChannel->fCfgInfo.option, 0);
    }

在每個(gè)__RTSPSourceCallBack回調(diào)函數(shù)中去調(diào)用一路EasyRTMP對(duì)象,將視頻流和音頻流封裝成RTMP格式并推送到RTMP服務(wù)器。詳細(xì)代碼請去GitHub下載https://github.com/jinlong0813/RTMPLive

編譯及運(yùn)行

Windows上使用Visual Studio 2010開發(fā),當(dāng)然各位可以改成自己的編譯環(huán)境。
Linux上編譯命令如下:

清理: ./Buildit clean
32位編譯:./Buildit i386
64位編譯:./Buildit x64

運(yùn)行時(shí)將Config.ini文件放至于可執(zhí)行文件相同路徑下,然后直接執(zhí)行可執(zhí)行程序,不用帶參數(shù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多