标题:Qt/C++开发监控GB28181系统/语音对讲/语音广播/实时通话/音视频通话
作者:liudianwu
日期:2025-05-20 18:34
内容:
## 一、前言
语音对讲在gb协议中也是非常繁琐,甚至比视频点播还要繁琐,不明白为何不直接用现有的视频通道来传输数据,而是要重新开一路。然道有些场景是纯音频设备,不需要视频也能正常对讲?语音对讲在gb28181中和视频点播刚好相反,他的流程是先服务端发一个语音广播的通知,设备端收到后应答,然后主动向服务端发起点播请求,携带sdp信息告知服务端采用何种模式通信,服务端收到后应答请求,监听或者连接对应端口,设备端应答ack后,整个对讲开始,服务端采集的音频数据,打包成rtp格式发送给设备端,设备端的语音信息一般会通过视频通道一起传输,视频通道收到的就版包含了设备端对讲的声音,解析出来播放即可。
那如何在界面上交互呢,这是个比较有意思的问题,之前视频控件已经做得很完善了,提供了万能的悬浮条,那就用这个做文章,之前的悬浮条是个单独的widget,提供了通用的函数接口,设置上面要显示哪些信息,可以添加哪些按钮,每个按钮都提供了单击事件发出来,收到信号后对应执行动作即可,之前已经有录像、静音切换、抓图、关闭等功能,现在只需要在中间插入一个对讲的按钮即可,于是从牛逼的阿里巴巴图标库中找到两个语音对讲图标字体,一个是开始语音对讲,一个是结束语音对讲,然后将新的字体图标添加到之前的iconfont图形字体库。最后搞了个专门的GB28181WidgetManage单例类,专门管理28181视频窗体的重连和语音对讲,系统一般会限制只能同时存在一个通道处于对讲状态,所以当其他窗体又单击了对讲按钮的时候,先判断过滤下,有就不执行并弹出提示。
## 二、效果图
## 三、相关地址
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_video_gb28181。
## 四、功能特点
1. 支持设备注册、注销、心跳、校时、注册认证、注销认证等。
2. 设备上线后可以手动获取设备状态、设备信息、配置信息、预置位信息等。
3. 设备上线后自动获 ..