大家好,欢迎来到IT知识分享网。
1.前提准备
1.1.首先将设备接入SIP网关服务
我这里使用的是开源的wvp-GB28181-pro项目,首先将设备接入到SIP网关服务。
配置信息如下:
1.2.修改设备配置
设备接入后,会自动注册到平台,可以在国标设备栏看到刚刚注册的设备信息。
如上图,是我刚刚接入的国标设备,如果不做特殊处理,设备接入的时候,流传输模式默认是“UDP”,这里需要改为“TCP被动模式”,否则是无法通过公网进行对讲请求。
1.3.公网对讲测试
点击上图中的设备后面的通道,可以进行对此设备进行拉流。
这里会有语音对讲的测试功能,默认使用“Broadcast”模式。然后点击对讲就可以开始对讲测试了。
(2)ZLMediaKit没有开启多端口模式或者其他配置有问题
(3)电脑没有语音输入功能
(4)没有使用SSL安全链接,
(5)设备自身不带对讲或者对讲协议不适配
总之很多地方需要注意,如果有搞不定的伙伴,可以加我微信:lenny。
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)*) + "</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整个项目进行魔改,最后实现了自己的系统业务呈现。
最终,将定位、轨迹、视频、对讲完整实现。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137262.html