标题:用纯Qt实现GB28181协议/实时视频/云台控制/预置位/录像回放和下载/事件订阅/语音对讲
作者:liudianwu
日期:2025-04-12 19:18
内容:
## 一、前言
在技术的长河中探索,有些目标一旦确立,便如同璀璨星辰,指引着我们不断前行。早在2014年,我心中就种下了用纯Qt实现GB28181协议的种子,如今回首,一晃十年已逝,好在整体框架和逻辑终于打通,个中滋味,只有自己知晓。
最初接触GB28181协议时,我就发现它远比熟悉的onvif协议复杂。onvif协议在局域网内表现出色,配置简单、使用方便,很多安防设备在局域网环境下借助onvif协议能轻松实现设备间的互联互通。然而,当涉及外网访问时,onvif就显得力不从心,几乎找不到有效的解决办法。在如今监控设备遍布大街小巷,各部门机构都急需外网远程取流的大环境下,GB28181协议应运而生。它作为一套视频监控规范,旨在解决外网访问监控视频的诸多痛点。但GB28181协议也面临着网络通信的固有难题,比如服务端在未收到客户端消息时,无法知晓客户端的具体通信地址,这就导致双方无法直接通信,必须由客户端主动向服务器发送消息来建立联系。
在实现GB28181协议的过程中,选择何种方式解析SIP协议是关键。市面上关于SIP协议的第三方库五花八门,功能看似完备。但经过深思熟虑,我最终决定采用Qt底层的udp通信协议来进行解析。这么做主要有两方面的考量。一方面,从底层入手能让我更深入地理解协议的每一个细节。在解析过程中,我可以根据实际需求打造友好的使用接口,避免了使用第三方库时可能遇到的各种问题,比如繁琐的编译过程,不同版本库之间的兼容性难题等。另一方面,考虑到项目后期的拓展性,从底层“手撸”代码是最好的选择。只有牢牢掌握底层实现,才能灵活应对各种新需求和新场景,将兼容性和易用性放在首位。毕竟,只有真正解决了客户在使用过程中的痛点,产品才有市场价值。
## 二、效果图
## 三、相关地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 文件地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin ..