执法仪对讲功能的实现
随着执法仪技术的发展要求,在执法仪的基础上添加实时对讲功能,有非常好的应用前景。
目前市面上已经出现了集成摩托罗拉的无线对讲模块的执法仪。也有安卓方案的对讲功能执法仪。
本文介绍的是Amba方案的对讲功能执法仪,此方案属于本人原创,现在已经有成功应用的案例。
现在的执法仪很多都有4G或Wifi模块,可以连接互联网。对讲功能就是通过IP语音实现。
对讲功能的实现工作有2种模式:
1. 边推流边对讲。就是执法仪推流到后台服务器,后台管理员在看实时直播,如果后 台管理员要与执法仪的人员交流,可以只接发送语音给执法仪。
2. 对讲机模式。执法仪与后台都是按PTT讲话,也可以在后台配置某2个或多个执法 仪为一个组,组内1人按PTT讲话,其他人都能听到。
Amba方案的执法仪具有图像清晰、低耗电等优势,但是Amba方案是双操作系统,RTOS和Ambalink。功能扩展比较复杂,对讲功能的实现也有一定难度。这里的关键就是如何使用AmbaNetFifo以及在本机播放实时音频流。
我们来看看上图RTOS和AmbaLink之间的AmbaNetFifo:
首先我们获取子码流,包括AAC和H264. 在对讲机模式下,就只发送AAC语音到后台服务器,注意,子码流的AAC是裸流,我们可以对每一帧都加上ADTS头。这样,在后台也可以直接存储成.aac文件。而且解码AAC也使用ADTS封装格式。
后台服务器的AAC格式的语音通过网络发送到Ambalink侧,通过AmbaNetFifo发送,在RTOS做相应的配置后,就可以播放了。
Amba的A12芯片编码和解码不能同时进行,所以对讲是半双工模式,跟实际的对讲机一样。编码和解码时,要控制好开启和释放资源。
下图是AmbaNetFifo的初始化与消息交互的MSC图。
AmbaNetFifo的具体实现请看实现代码,这里不再详细说明。
前面部分讲了Amba的实现,接着讲网络协议。
现有的VoIP协议有很多,如SIP,IAX2等,还可以自定义。
对于SIP协议,虽然绝大多数情况下都用它,我也从事SIP协议多年,但我不主张在这里使用。首先,协议比较庞大;其次,媒体传输用RTP,必须要打洞才能穿越NAT,这里本来很简单的应用场合会变得比较复杂。
IAX2协议,UDP传输,信令媒体共用一个端口,不需要打洞,信令用重传/回执保证可靠。基于二进制,信令短,媒体包头才4个字节,网络开销少,节省流量(4G网络时)。协议简单,代码很少,我比较推荐。
另外,就是自定义。
第三部分就是服务器。服务器需要管理所有用户的在线状态、GPS轨迹(如果有GPS)、录音、监听、群组管理、对讲等功能。