天天看點

QT實作低延遲的RTSP、RTMP播放器

好多開發者在QT環境下實作RTMP或RTSP播放時,首先考慮到的是內建VLC,內建後,卻發現VLC在延遲、斷網重連、穩定性等各個方面不盡人意,無法滿足上線環境需求。本文以調用大牛直播SDK(官方)的Windows平台播放端SDK為例,介紹下如何在QT下實作低延遲的RTMP|RTSP播放器,廢話不多說,先上圖:

大牛直播SDK有MFC的demo,是以在QT上實作播放輕車熟路,如果需要多視窗播放,也可以參考轉發的demo,轉發的那個4視窗預覽的demo做了二次封裝,調用更友善。

窗體布局不再贅述,就是個普通的6視窗布局,不得不說,QT在窗體布局這塊,相對MFC真的太友善了。

考慮到大多場景下,開發者有多路播放訴求,針對這種情況,我們對player做個簡單的封裝:

開始播放:

開始播放封裝,調用了OpenPlayerHandle(),檢查系統是不是支援特定機型硬解碼,通過調用Open()接口,擷取播放執行個體,然後進行播放前的參數設定,比如網絡狀态event回調、視訊寬高回調、設定buffer time、RTSP的TCP-UDP模式,預設播放音量等,具體實作如下:

停止播放:

Event回調:

調用封裝後的播放接口,記得多執行個體播放環境下,Init()和UnInit()接口僅需要調用一次,測試URL可自行設定。

窗體大小發生改變時:

以上是QT環境下內建個低延遲的RTMP、RTSP播放的基本流程,感興趣的開發者可酌情參考。相對MFC,QT環境下在實作更酷炫和實用的邏輯顯然體驗更好一些。