拉模式轉發
拉模式轉發,顧名思義就是服務器主動從源端(IPCamera、NVR、或者其他流媒體服務器)通過RTSP/RTP協議將流媒體音視頻數據拉取到流媒體轉發服務器,再通過內部分發調度機制,分發給請求轉發的客戶端的過程;
拉模式轉發的用途非常廣泛:內網直播、服務器級聯、NVR等各個方面,結合服務端存儲,還可以做成邊轉發直播、邊錄像的功能;
EasyDarwin拉模式轉發
EasyDarwin的拉模式轉發需要做到幾點:
- 通用接入:接入市面上大部分的IPCamera及NVR;
- 按需拉取:只有在有用戶請求播放數據的時候,EasyDarwin才會向源端獲取數據;
- 無請求釋放:當某一路轉發的用戶觀看量減少為0時,EasyDarwin需要主動釋放對源端的拉取;
- 預配置:拉模式轉發模塊能夠讀取預配置的拉模式列表xml配置;
- RESTful接口:EasyDarwin支持RESTful接口調用,增加或者刪除拉模式轉發;
實現方案
我們為EasyDarwin新增一個模塊:EasyRelayModule,在EasyRelayModule中,我們為每一路源的轉發都建立一個由live555維護的RTSPClient線程,再由EasyRelayModule對線程進行HashMap維護,啟動與停止進行外部干預,從而維護整個EasyDarwin流媒體服務器所有接入的RTSP源;
這里有一個問題需要說明:我們采用live555進行RTSP流媒體數據的獲取(支持RTP over TCP || UDP),我們改造了live555通常的RTSP獲取流程,直接將live555的sink用simpleRTPSink,直接獲取到RTP數據,轉發給QTSSReflectorModule進行轉發;
EasyDarwin Github
獲取更多信息
Copyright © EasyDarwin.org 2012-2016