在早前的版本更新中,EasyGBS已經支持了語音對講的功能,不管是發送一段語音,還是實時進行語音講話,EasyGBS都能很好的運行,
但是近期發現通過EasyGBS和設備在進行語音對講程序中,第一次對講可以正常進行,再次發送對講訊息的時候設備則沒有回應了,進過抓包分析對講流程發現,第二次對講之后,設備不會回復對講訊息,需等設備回復關閉對講通道后,才能夠再次發送對講訊息,
因此此處為了加強語音體驗的使用感,我們需要對代碼進行修改,當和通道建立一次連接過后,超時十秒沒收到語音訊息,才會再次向設備發送語音喊話請求
if !Server.Talk {
sipDev := Server.GetDevice(deviceId)
if sipDev == nil {
err = fmt.Errorf("[talk] device[%s] not found", deviceId)
return
}
reqBroadcast, _, err := Server.MakeTalkRequest(deviceId, Server.Realm, channelId)
err = reqBroadcast.SendByTransport(sipDev.Transport)
if err != nil {
return err
}
_, err = Server.WaitAck(reqBroadcast.HeaderMap["Call-ID"], reqBroadcast.HeaderMap["CSeq"])
if err != nil {
return err
}
go func() {
key := fmt.Sprintf(`%s:`, deviceId)
var talkChan = make(chan string)
Server.TalkChanDataLock.RLock()
Server.TalkChanData[key] = talkChan
Server.TalkChanDataLock.RUnlock()
Server.TalkChanData[key] <- talkData
return
}()
}
再次發送兩次語音請求測驗,抓包查看資料都顯示正常,則該問題優化完畢,
? 更多視頻解決方案資源匯總
- 流媒體技術:
? EasyDarwin開源流媒體服務器:http://www.easydarwin.org
? TSINGSEE視頻開放平臺:http://open.tsingsee.com
- 視頻云服務:
? EasyDSS互聯網視頻云服務:http://www.easydss.com
? EasyCVR安防視頻云服務:http://www.easycvr.com
? EasyGBS國標視頻云服務:http://www.easygbs.com
? EasyRTC在線視頻會議平臺:http://www.easyrtc.cn
? EasyRTS即時通信云服務:http://www.easyrts.com
- 邊緣計算:
? EasyNVR視頻邊緣計算網關:http://www.easynvr.com
? EasyNTS上云網關:http://www.easynts.com
? TSINGSEE Team:http://www.tsingsee.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225428.html
標籤:其他
上一篇:C#封裝多個執行緒
