qt 實現RTSP&RTMP拉流,實時顯示視頻流

最近項目需求,要實現一個rtsp視頻流,經過一番瞭解之後,最後選擇兩種方式進行測試對比,一個是基於ffmpeg編碼實現rtsp拉流,另外一個則是基於VLC開源的qt第三方庫,實在github上搜索到的 key: qt vlc。

首先粗略講下ffmpeg編碼怎麼實現rtsp拉流呢?沒有接觸之前,感覺很高深的樣子,其實並不然,ffmpeg內部基本都幫你實現了,類似打開攝像頭一樣的流程,使用avformat_open_input打開流地址,然後設置參數就可以開始av_read_frame解析包,最從YUV轉位RGB32共qt顯示即可。 rtsp流有個地址,例如: rtsp://192.168.17.112/tmp.h264, 這個是在自己電腦上搭建的基於live555流服務器地址,方便測試。首先到ffmpeg官網下載windows開發SDK,地址https://ffmpeg.zeranoe.com/builds/,我下載的是win32版本的,需要下載share和dev兩部分,解壓之後有bin,lib,include三部分內容,lib和include用於編成,bin裏面有dll和自帶的三件套ffmpeg,ffplay,ffprobe,先用ffplay命令測試了一下rtsp流地址是否可用如下:ffplay rtsp://192.168.17.112/tmp.h264 果然可以正常顯示測試文件的畫面了

準備工作都做好了,那就開始編程吧,主要流程上面都講過了,就不過多描述了,直接上核心代碼:
注意:代碼裏面有一個rtsp地址,編譯運行的時候記得修改爲自己的測試地址,我也找了一個網絡的rtmp地址,目前是還可以使用,後面就不知道能不能用了,rtsp和rtmp一樣的使用就是把地址更換一下,目前沒有發現什麼不一樣的,也沒有過多去研究。

rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp

pro 配置ffmpeg SDK

拉流使用一個線程單獨操作,在run裏面循環解析流數據,在發送到主線程UI顯示畫面

運行結果:

 

qt vlc用法在另外一遍在說了,

包含ffmpeg SDK的完整工程下載地址:https://download.csdn.net/download/u012532263/11922757
打開後直接編譯運行即可,qt5.9.7mingw版本,msvc版本的可能fffmpeg的SDK用不了,需要自己編譯。

 

 

 

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