GB28181语音对讲实现

37 篇文章 1 订阅
23 篇文章 2 订阅

1.前提准备

1.1.首先将设备接入SIP网关服务

我这里使用的是开源的wvp-GB28181-pro项目,首先将设备接入到SIP网关服务。

配置信息如下:

1.2.修改设备配置

设备接入后,会自动注册到平台,可以在国标设备栏看到刚刚注册的设备信息。

如上图,是我刚刚接入的国标设备,如果不做特殊处理,设备接入的时候,流传输模式默认是“UDP”,这里需要改为“TCP被动模式”,否则是无法通过公网进行对讲请求。

1.3.公网对讲测试

点击上图中的设备后面的通道,可以进行对此设备进行拉流。

这里会有语音对讲的测试功能,默认使用“Broadcast”模式。然后点击对讲就可以开始对讲测试了。

因为对讲需要依赖ZLMediaKit,如果到此还是无法进行对讲,可能有以下几个方面:
(1)ZLMediaKit版本不对

(2)ZLMediaKit没有开启多端口模式或者其他配置有问题

(3)电脑没有语音输入功能

(4)没有使用SSL安全链接,

(5)设备自身不带对讲或者对讲协议不适配

总之很多地方需要注意,如果有搞不定的伙伴,可以加我微信:lenny930618。

2.实现代码

给国标设备下发指令,通知设备进行语音对讲

 /**
     * 语音广播
     *
     * @param device 视频设备
     */
	@Override
	public void audioBroadcastCmd(Device device, String channelId, SipSubscribe.Event okEvent, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
        StringBuffer broadcastXml = new StringBuffer(200);
        String charset = device.getCharset();
        broadcastXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
        broadcastXml.append("<Notify>\r\n");
        broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
        broadcastXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
        broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
        broadcastXml.append("<TargetID>" + channelId + "</TargetID>\r\n");
        broadcastXml.append("</Notify>\r\n");
        Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
        sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent);
    }

设备收到的指令信息如下: 

3.系统效果

我这边因为客户并非严格的国标设备,在国标的基础上进行了很多修改,我也是对WVP整个项目进行魔改,最后实现了自己的系统业务呈现。

最终,将定位、轨迹、视频、对讲完整实现。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼>

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值