国标GB28181协议视频流媒体平台EasyGBS更新通道后音频被关闭是什么原因?
程序员文章站
2022-07-14 20:44:58
...
国标GB28181协议视频平台EasyGBS前端可以接入带有音频功能的摄像头,同时也可以通过摄像头进行语音对讲,并且EasyGBS可以识别音频复合流,在视频流播放的时候同时播放音频。
在EasyGBS更新通道的时候,我们发现当设备是开启音频的时候,点击设备管理里面的更新通道按钮,此时会更新设备的音频状态为关闭,也就是说原本开启的音频被关闭了。
经过排查代码的逻辑分析,当页面点击更新设备更新通道按钮的时候,后端会向设备去查询通道信息,然后对数据库的记录进行更新,但是应为音频字段并不是设备本身自带从摄像头传过来的,导致在更新通道的时候会将这个数据给丢失了。
所以需要在设备更新通道的时候,将音频字段忽略,沿用原有的数据库信息。参考代码如下:
for idx, channel := range chs {
channel.DeviceID = dev.ID
channel.Channel = uint(idx + 1)
snapFile := filepath.Join(utils.DataDir(), "snap", channel.DeviceID, fmt.Sprintf("%s.jpg", channel.ID))
if fi, err := os.Stat(snapFile); err == nil {
t := fi.ModTime().UnixNano()
channel.SnapURL = fmt.Sprintf("/snap/%s/%s.jpg?t=%d", channel.DeviceID, channel.ID, t)
}
err = tx.Omit("ondemand", "record", "record_plan", "record_plan_switch", "audio").Save(channel).Error
if err != nil {
tx.Rollback()
return
}
channelIds = append(channelIds, channel.ID)
}
再次更新,一切正常。
EasyGBS目前支持云台控制,基于动态组网服务创建智能网络,按需选择需要组网的网络成员实现点点互联,并且对外提供服务器获取状态、信息,控制 HTTP API接口,用户可以*进行二次开发。
EasyGBS视频平台播放界面:
如果大家对TSINGSEE青犀视频云边端架构产品感兴趣,欢迎联系我们,了解咨询,TSINGSEE青犀视频全线产品欢迎大家的试用。