原创 Qt/C++視頻監控拉流顯示/各種rtsp/rtmp/http視頻流/攝像頭採集/視頻監控回放/錄像存儲

一、前言 本視頻播放組件陸陸續續寫了6年多,一直在持續更新迭代,視頻監控行業客戶端軟件開發首要需求就是拉流顯示,比如給定一個rtsp視頻流地址,你需要在軟件上顯示實時畫面,其次就是錄像保存,再次就是一些周邊的處理比如貼OSD,做圖片分析等。

原创 Qt/C++音視頻開發57-切換音視頻軌道/切換節目流/分別切換音頻視頻軌道

一、前言 對各種音視頻文件格式的支持,是一個播放器的基礎功能。一般的音視頻文件只有1路流,比如音頻文件只有1路音頻流,視頻文件只有1路音頻1路視頻流,實踐過程中發現,還有一種ts格式的文件,可能有多路流,這種格式一般是將多路節目流封裝到一個

原创 Qt/C++開發經驗小技巧286-290

國內站點:https://gitee.com/feiyangqingyun 國際站點:https://github.com/feiyangqingyun 很多時候項目越寫越大,然後就可能遇到,明明之前很簡單的一段代碼,運行的好好的,就那

原创 Qt/C++開源作品45-CPU內存顯示控件/和任務管理器一致

一、前言 在很多軟件上,會在某個部位顯示一個部件,專門顯示當前的CPU使用率以及內存佔用,方便用戶判斷當前程序或者當前環境中是否還有剩餘的CPU和內存留給程序使用,在不用打開任務管理器或者資源查看器的時候直接得知當前系統的運行情況。尤其是視

原创 Qt/C++編寫物聯網組件/支持modbus/rtu/tcp/udp/websocket/mqtt/多線程採集

一、功能特點 支持多種協議,包括Modbus_Rtu_Com/Modbus_Rtu_Tcp/Modbus_Rtu_Udp/Modbus_Rtu_Web/Modbus_Tcp/Modbus_Udp/Modbus_Web等,其中web指web

原创 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