随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

EasyGBS通过国标协议对接执法记录仪的语音通话无法正常发送数据问题优化

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

再次抓包分析,就已经能够正常对讲了。

posted on   EasyGBS  阅读(205)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示