EasyGBS是对接国标协议的视频平台,在交警、巡警的户外执法中,作为执法记录的单兵设备或者执法记录仪可以直接通过国标协议接入进EasyGBS,进行实时在线记录。
目前我们正在调试EasyGBS对接执法记录仪的各项功能,在前期调试的执法记录仪对讲中,对讲音频是以文件录制发送的模式,后期又调整为通话模式,可长时间对讲,但是出现一个问题,就是发送音频数据给执法记录仪,但是设备却不接收。
通过抓包分析发现是发包的顺序问题:
添加如下代码,每次发送的包数据自序递增:
sendLen = lastLen
tmp := rtp.RTPInfo{
Version: 2,
Padding: false,
Extension: false,
CSRCCnt: 0,
Marker: true,
PayloadType: 0x08,
SequenceNumber: SequenceNumber,
Timestamp: Timestamp,
SSRC: 0,
Payload: make([]byte, C.RTP_HDR_LEN+sendLen),
}
copy(tmp.Payload[C.RTP_HDR_LEN:], pcm[seekPos:seekPos+sendLen])
//C.gb28181_make_rtp_header((*C.char)(unsafe.Pointer(&tmp.Payload[0])), 1, 0, 0, 0)
C.gb28181_make_rtp_header((*C.char)(unsafe.Pointer(&tmp.Payload[0])), 1, C.ushort(SequenceNumber), C.longlong(Timestamp), C.uint(123456))
SequenceNumber += 1
rtpInfos = append(rtpInfos, tmp)
seekPos += sendLen
lastLen -= sendLen
再次抓包分析,就已经能够正常对讲了。