慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

博客园 - 飞扬青云

全网原创再次熬夜升级/支持云台预置位的onvif设备模拟器/虚拟监控摄像头/可设置主码流子码流 使用ffmpeg播放不同节目/实时切换节目并推流/推流不同的节目流 对标国际Onvif工具odm/新版视频监控onvif调试助手V2026发布/简单好用开箱即用 全网唯一/不依赖浏览器和qlocation/纯代码绘制实现的地图组件/短小精悍 监控设备模拟神器V2026全新含泪发布/支持onvif和gb28181/支持云台控制和预置位 将地图组件运行在浏览器上/qtlocation都做不到/轻巧好用/自研原创 不依赖任何AI代码/纯qpainter实现的航线规划/飞行轨迹规划和模拟/无人机轨迹 如何快速搭建一套支持ONVIF的安防监控系统 没有想不到只有做不到/万能地图标注点marker设计/各种参数需求场景/你要的都有 呕心沥血/历时半年/古法编程/纯QPainter实现的地图控件/性能爆表 绘制1000个无人机只需7ms/优化到极致/地图组件海量标注点/纯QPainter绘制的威力 实时轨迹/轨迹回放/多条轨迹同时回放/轨迹平滑移动/移动速度和间隔/自动旋转角度 记一个优化改良的实施过程/纯QPainter实现的地图组件/支持天地图谷歌地图等 性能提升百倍/Qt地图组件纯QWidget绘制/缓存瓦片技术/多线程加载绘制 纯QWidget绘制实现电子地图控件/非qml非web/多线程下载和加载瓦片/支持各种图形 Qt实现离线地图下载/瓦片地图下载/划区域下载离线地图/多线程批量下载 Qt实现电子地图热力图的绘制/热力图叠加图层/拖曳缩放移动 Qt实现行政区划轮廓图下载/一键批量下载/可编辑/天地图高德地图百度地图 全网首个源码级的跨平台视频监控系统方案/持续迭代更新/视频监控系统轮询管理的优化 Qt/C++开发监控GB28181系统/个人理解/要点总结/经验分享 离线获取任意经纬度海拔高度?一个100行代码的跨平台方案 Qt开发集群地面站管理平台/飞行轨迹动态规划和模拟/自由规划路径/飞行轨迹模拟 记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG/排对打开通道过程中关闭通道可能崩溃的BUG Qt优化onvif设备搜索/一键批量搜索/onvif设备模拟器/几千路并发/实时推流/虚拟监控摄像头 Qt/C++地图最简示例/在线离线切换/地图视图切换/执行各种js函数交互 十年磨一剑/支持海康大华宇视华为天地伟业等所有厂家的视频监控系统/支持264和265/硬解和GPU绘制/支持国产麒麟和UOS以及RK3588等环境 祖传独创/全网唯一/Qt结合ffmpeg实现读取ts文件节目流/动态切换多节目/实时切换不同轨道
新版監控GB28181調試神器V2026發佈/對標wvp/綠色版開箱即用
飞扬青云 · 2026-05-24 · via 博客园 - 飞扬青云

一、前言說明

和視頻監控onvif調試助手一樣,這次主要更新是針對收發數據打印的,之前是表格中顯示,每個數據包比較多的內容,如果要查找問題,經常要滾動條翻很久找對應數據,這次統一改成了表格的形式展示收發數據,有不同文字顏色顯示,如果需要查看詳細的數據,只需要雙擊對應行即可,節省了不少的調試時間,由於自己外接了很多的國標設備,數據量有時候蜂擁而至,還可以設置過濾條件過濾顯示需要的數據。

很奇怪的是,這個工具也主要是非開發人員使用,現在監控設備基本上都要求要支持國標gb28181,所以為了驗證設備是否正常,一般會先用個簡單的工具調試測試一下,尤其是兼容性,28181標準文檔對於有些規範描述不是很詳細,導致某些廠家實現就有出入,甚至有些都不符合規範,比如在點播視頻的時候,指定ssrc,而有些廠家做的設備居然沒有ssrc,這就需要服務端系統去兼容,我這個工具可以把每一條的收發數據打印,很容易查找分析出問題。

有個著名的國標系統wvp,非常多人用,BS架構網頁的,相當於可以直接公網使用,功能強大,缺點就是文件體積很大,部署很麻煩,調試很困難,而我這個綠色版雙擊可用,兼容任意系統,包括安卓和國產linux系統以及嵌入式板子,而wvp受限制比較多,搭建和調試需要專業的人員。

二、效果圖

Snipaste_2026-05-24_14-38-20

Snipaste_2026-05-24_14-38-39

三、相關地址

  1. 國內站點:https://gitee.com/feiyangqingyun
  2. 國際站點:https://github.com/feiyangqingyun
  3. 個人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 文件地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 文件名:bin_video_28181

四、功能特點

  1. 支持設備註冊、註銷、心跳、校時、註冊認證、註銷認證等。
  2. 設備上線後可以手動獲取設備狀態、設備信息、配置信息、預置位信息等。
  3. 設備上線後自動獲取設備通道信息,包括中文通道名稱。識別到通道上線離線變化,會重新獲取該設備的所有通道信息。
  4. 支持視頻點播,可以分別點播主碼流和子碼流,內置rtp解包線程,解包後發給視頻播放組件解碼播放。
  5. 每個設備每個通道支持點播多個視頻,通過ssrc區分,支持共用端口和不同端口收流。
  6. 支持對某個設備下面所有通道、某個通道、某個通道對應的某個流分別關閉。
  7. 支持錄像文件查詢和回放,回放控制支持暫停播放、繼續播放、倍速播放、切換播放進度。
  8. 支持錄像文件下載,支持倍速比如8倍速下載,可同時多線程批量下載。
  9. 回放和下載同時支持IPC和NVR,比如攝像頭自帶的SD存儲卡錄像文件回放,NVR上的硬盤錄像文件回放。
  10. 支持雲臺控制,向上、向下、向左、向右、左上、右上、左下、右下方位移動,鏡頭放大縮小,光圈放大縮小,鏡頭聚焦放焦。
  11. 支持預置位信息的查詢、調用、添加、修改、刪除等操作。
  12. 自動目錄訂閱功能,通道上線下線都有對應的信號通知。
  13. 內置定時讀取通道信息機制,以保證通道信息是最新的,比如有些NVR是不斷更新的通道信息。
  14. 內置訂閱警情和位置移動功能,訂閱後各種警情事件比如運動目標檢測報警、入侵檢測報警、徘徊檢測報警等自動上報。
  15. 支持語音對講功能,可以直接在視頻窗體的懸浮條上單擊語音對講按鈕,再次單擊關閉對講,對講期間懸浮條常駐顯示。
  16. 支持設備佈防撤防,佈防後警情信息會主動上報。
  17. 國標服務同時支持udp和tcp方式,可選只監聽一種或者兩種都監聽,tcp方式自動處理粘包問題。
  18. 國標拉流同時支持udp、tcp被動、tcp主動三種方式,每個通道都可以自由選擇何種拉流方式。
  19. 內置拉流端口池,每次拉流從中取出一個,關閉流自動回收端口號,重複利用。
  20. 收流端口自動糾錯,自動跳過被佔用的端口,不會出現端口占用導致收流失敗的情況。
  21. 支持三種取流方式自動檢測離線重連,檢測到離線後,自動重啟點播拉流整個流程。
  22. 錄像文件回放,上一個完成後自動切換到下一個繼續回放,直到所有回放完成。支持高達8倍速回放。
  23. 視頻播放自適應硬解碼,極低資源佔用,實時性極好,帶懸浮條顯示視頻流信息,可以直接在懸浮條單擊按鈕保存錄像文件到本地。
  24. 支持幾千路國標消息交互併發,實時視頻流支持64路同時顯示,可以拓展更多路數。
  25. 支持阿里雲等雲服務器,可以分別設置內網監聽地址和外網訪問地址,一般雲服務器上是監聽地址用內網,對外訪問用外網地址。
  26. 支持視頻分發,也就是推流,視頻通道打開後可以自動推流到流媒體服務器,其他需要的地方拉流即可,支持rtsp、rtmp、hls、webrtc等方式拉流。
  27. 視頻分發也叫推流分發,表格方式展示正在推流的信息,其中包括顯示統計哪些流正在被多少個地址拉取,比如有兩個地方通過rtsp打開了取流,則對應推流地址行所在rtsp列顯示數量2,非常直觀的展示有多少個拉流。
  28. 視頻分發支持無人觀看超時自動關閉推流和點播,提高帶寬的利用率,沒人觀看太久的時候,沒必要點播拉流和推流。在後臺服務模式下,通道推流自動複用,當該通道已經存在點播推流,則複用該路流數據,不會再去點播,節約資源。
  29. 提供後臺服務功能,定義了一套私有協議,根據私有協議進行交互,支持tcp、http、mqtt等方式交互,方便第三方程序接入集成。通信協議非常完整,支持獲取設備列表、獲取指定通道視頻地址、雲臺控制、預置位操作、錄像查詢、錄像回放、錄像下載、回放倍速等控制、警情消息通知、視頻點播和關閉等。
  30. 支持註冊重定向,方便做負載均衡和區域化部署,這樣可以支持幾十萬個設備連接都沒問題。
  31. 支持圖像抓拍,可以設置抓拍最多10張圖片,可設置抓拍間隔,抓拍到的圖片會通過信號通知。
  32. 實時預覽和錄像回放都支持推流,推流支持疊加文字和圖片水印以及各種ffmpeg支持的濾鏡效果,支持多個水印同時疊加。
  33. 支持各種國標平臺上級域級聯,比如easygbs、livegbs、海康大華國標平臺,上級域級聯到本軟件,自動解析資源目錄等。
  34. 可開啟共享設備,默認開啟,以便udp方式處理sip交互的同時,tcp方式接收平臺推送的資源目錄和錄像文件信息。
  35. 極速響應設備上線,無需過多等待,只要有過一條消息,無論是收到註冊指令、心跳指令、推送指令等,都能立即獲取或者解析設備信息和通道信息並上線。
  36. 同時支持gb28181-2011、gb28181-2016、gb28181-2022以及後續可能的所有協議版本。
  37. SIP解析和交互採用純Qt底層代碼實現,udp/tcp通信交互,祖傳原創代碼解析,不依賴任何第三方。
  38. 代碼量少,gb28181交互部分共幾千行代碼,註釋詳細,接口友好,使用極其簡單,提供非常詳細的使用示例。
  39. 支持海康、大華、宇視、華為、天地偉業等所有國標設備,包括一些沒有ssrc的設備。
  40. 支持所有Qt版本和編譯器以及操作系統,包括但不限於win、linux、mac、android、嵌入式linux、樹莓派香橙派、國產os等。

五、相關代碼

2.0 基本步驟

  1. 第一步,將core_gb28181server和core_gb28181rtp以及core_gb28181widget目錄拷貝到你的項目的上一級目錄。
  2. 第二步,打開項目的pro文件,引入gb28181組件,include ($$PWD/../core_gb28181server/core_gb28181server.pri) 和 include ($$PWD/../core_gb28181rtp/core_gb28181rtp.pri)以及include ($$PWD/../core_gb28181widget/core_gb28181widget.pri) 。
  3. 第三步,在代碼文件引入對應頭文件,#include "gb28181server.h",使用代碼。
  4. core_gb28181server負責信令解析和交互,core_gb28181rtp負責rtp解包,core_gb28181widget負責視頻顯示,解碼默認使用core_videomdk組件,此組件使用ffmpeg開發。也可以切換成core_videoffmpeg組件。
  5. 為了使用方便,特意封裝了GB28181Widget類,專用於國標流的預覽、回放、下載,不顯示期間不會觸發繪製,不用擔心佔用系統資源,此類也可用於推流。

2.1 啟動服務

//實例化國標服務類
GB28181Server *server = new GB28181Server;
//設置需要的參數
GB28181ServerPara para;
//國標編碼
para.serverId = "34020000002000000001";
//區域編碼
para.serverRealm = "3402000000";
//外網地址/設備端填寫的服務器地址就是這個地址/如果是本地則和監聽地址相同
para.serverHost = "192.168.0.110";
//監聽地址
para.serverIp = "192.168.0.110";
//監聽端口
para.serverPort = 15060;
//認證密碼/為空的話則不啟用認證
para.serverPwd = "12345678";
//查詢通道信息的間隔/0表示不啟用/單位秒
para.queryInterval = 0;
server->setServerPara(para);
//啟動服務/udp和tcp同時監聽
server->start(ListenMode_Both);

//綁定信號接收數據
//設備上下線
connect(server, SIGNAL(deviceChanged(QString, bool)), this, SLOT(deviceChanged(QString, bool)));
//通道變化
connect(server, SIGNAL(channelChanged(QString, QList<GB28181Channel>)), this, SLOT(channelChanged(QString, QList<GB28181Channel>)));
//警情上報
connect(server, SIGNAL(receiveEvent(GB28181Event)), this, SLOT(receiveEvent(GB28181Event)));
//媒體狀態變化
connect(server, SIGNAL(receiveStatus(GB28181Status)), this, SLOT(receiveStatus(GB28181Status)));
//返回預置位信息
connect(server, SIGNAL(receivePreset(QList<GB28181Preset>)), this, SLOT(receivePreset(QList<GB28181Preset>)));   
//返回錄像文件信息
connect(server, SIGNAL(receiveRecord(QList<GB28181Record>)), this, SLOT(receiveRecord(QList<GB28181Record>)));

//停止服務
server->stop();