live555開源流媒體服務器實現直播秒開的構思

live555開源流媒體服務器實現的是視頻和音頻的數據傳輸,在客戶端請求音視頻後,由上層調用程序將音視頻數據推進隊列, 待和客戶端的RTSP交互完成後,再通過RTP將音視頻數據發給客戶端; 在客戶端往往要2-3秒後纔出視頻畫面;

需求分析:

我們封裝實現的EasyRTSPServer是基於live555改造而來,在上層調用程序將音視頻推給EasyRTSPServer時,實際上是拷貝到了內存隊列, 而在EasyRTSPServer創建隊列到上層調用程序推送到隊列,這中間經過了較多的步驟. 音視頻隊列是在上層應用返回媒體信息時創建,即向客戶端發送DESCRIBE返回信息時創建, 而發送數據是在向客戶端發送完PLAY時纔開始, 這中間的過程中,上層調用程序會一直將數據推給隊列。

解決方案:

在向客戶端發送完PLAY後,先獲取音視頻隊列中的歷史幀進行發送,而不是直接取當前幀進行發送;

此處爲EasyRTSPServer中爲優化的點,可加快客戶端出畫面的速度,另外還有一點,就是在上層調用程序上需要做緩存,即在EasyRTSPServer回調出EASY_CHANNEL_OPEN_STREAM時,上層調用程序向前端請求音視頻流,在此時EasyRTSPServer和客戶端的交互還沒有完成,而前端的流已經過來了,此時就需要做一個緩存,在EasyRTSPServer和客戶端交互完成後,將緩存中的幀全部送到EasyRTSPServer; 如此即可實現視頻秒開(還有一點需要注意的是前端的GOP設置, 該設置也決定了出視頻畫面的速度);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章