原创 Qt/C++原創推流工具/支持多種流媒體服務/ZLMediaKit/srs/mediamtx等

一、前言 1.1 功能特點 支持各種本地視頻文件和網絡視頻文件。 支持各種網絡視頻流,網絡攝像頭,協議包括rtsp、rtmp、http。 支持將本地攝像頭設備推流,可指定分辨率和幀率等。 支持將本地桌面推流,可指定屏幕區域和幀率等。 自動

原创 Qt/C++音視頻開發56-udp推流和拉流/組播和單播推流

一、前言 之前已經實現了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,這種一般都需要依賴一個獨立的流媒體服務程序,有沒有一種更便捷的方式不需要這種依賴,然後又能實現推拉流呢,當然有的那就是ud

原创 Qt/C++音視頻開發55-加密保存到文件並解密播放

一、前言 爲了保證視頻文件的安全性,有時候需要對保存的視頻文件加密,然後播放的時候解密出來再播放,只有加密解密的祕鑰一致時才能正常播放,用ffmpeg做視頻文件的加密保存和解密播放比較簡單,基於ffmpeg強大的字典參數設計,在avform

原创 Qt/C++音視頻開發54-視頻監控控件的極致設計

一、前言 跌跌撞撞摸爬滾打一步步迭代完善到今天,這個視頻監控控件的設計,在現階段水平上個人認爲是做的最棒的(稍微自戀一下),理論上來說應該可以用5年不用推翻重寫,推翻重寫當然也是程序員愛乾的事情,這個就要考驗個人的功底,設計的好框架搭建的好

原创 Qt/C++音視頻開發53-本地攝像頭推流/桌面推流/文件推流/監控推流等

一、前言 編寫這個推流程序,最開始設計的時候是用視頻文件推流,後面陸續增加了監控攝像頭推流(其實就是rtsp視頻流)、網絡電臺和視頻推流(一般是rtmp或者http開頭m3u8結尾的視頻流)、本地攝像頭推流(本地USB攝像頭或者筆記本自帶攝

原创 Qt/C++音視頻開發52-採集本地屏幕桌面的終極設計

一、前言 最開始設計的時候,只考慮了一個屏幕的情況,這種當然是最理想的情況,實際上雙屏或者多屏的用戶也不在少數,比如我這兩個屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印兩個屏幕的區域是 QRect(0,0 1920x1030), QR

原创 Qt/C++音視頻開發49-推流到各種流媒體服務程序

一、前言 最近將推流程序完善了很多功能,尤其是增加了對多種流媒體服務程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中經過大

原创 Qt/C++編寫視頻監控系統81-Onvif報警抓圖和錄像並回放

一、前言 視頻監控系統中的圖文警情模塊,是通過Onvif協議的事件訂閱拿到的,通過事件訂閱後,設備的各種報警事件比如入侵報警/遮擋報警/越界報警/開關量報警等,觸發後都會主動往訂閱者發送,而且一般都是會發送兩次,一次報警開始,一次報警結束,

原创 Qt/C++編寫視頻監控系統80-遠程回放視頻流

一、前言 遠程回放NVR或者服務器上的視頻文件,一般有三種方式,第一種是調用廠家的SDK,這個功能最全,但是缺點明顯就是每個廠家的設備都有自己的SDK,只兼容自家的設備,如果你的軟件需要接入多個廠家的,那就意味着要寫好多套SDK接入。而且一

原创 Qt/C++開發經驗小技巧281-285

懸停窗體QDockWidget默認在標題欄右鍵會彈出懸停模塊的顯示隱藏菜單,如果需要去掉,會發現設置Qt::NoContextMenu或者事件過濾器攔截都是無效的,必須設置 dockWidget->setContextMenuPolic

原创 Qt安卓開發經驗技巧總結V202308

01:01-05 pro中引入安卓拓展模塊 QT += androidextras 。 pro中指定安卓打包目錄 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 指定引入安卓特定目錄比如程序圖標、變量

原创 歷時數月鑽研推流/對比各種流媒體服務程序/PK總結

1 前言 大量測試下來,網頁顯示視頻流實時性從高到低依次是 webrtc > ws-flv > flv > hls。播放器打開rtsp/rtmp視頻流實時性由具體的播放器控制,比如緩存大小和緩存時間,是否音視頻同步等。 由於flv拉流同源

原创 Qt4/5升級到Qt6吐血經驗總結V202308

00:直觀總結 增加了很多輪子,同時原有模塊拆分的也更細緻,估計爲了方便拓展個管理。 把一些過度封裝的東西移除了(比如同樣的功能有多個函數),保證了只有一個函數執行該功能。 把一些Qt5中兼容Qt4的方法廢棄了,必須用Qt5中對應的新的函

原创 Qt/C++音視頻開發50-不同ffmpeg版本之間的差異處理

一、前言 ffmpeg的版本衆多,從2010年開始計算的項目的話,基本上還在使用的有ffmpeg2/3/4/5/6,最近幾年版本彪的比較厲害,直接4/5/6,大版本之間接口有一些變化,特別是一些廢棄接口被徹底刪除了,而網絡上的各種文章幾乎都

原创 Qt/C++音視頻開發49-多級連保存和推流設計(同時保存到多個文件/推流到多個平臺)

一、前言 近期遇到個用戶需要多級聯的保存和推流,在ffmpegsave多線程保存類中實現這個功能,越簡單越好,就是在推流的同時,能夠開啓自動轉儲功能,一邊推流的同時一邊錄像保存到本地視頻文件。最初設想的一個方案是new兩個ffmpegsav