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
再次抓包分析,就已经能够正常对讲了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结