我们的视频流媒体服务器诸如支持国标协议的EasyGBS、支持RTSP协议的EasyNVR流媒体平台,这些平台在做研发的时候,我们都做了快照界面,让用户观看的界面更加直观。
由于最近EasyGBS更新了新版内核,我们在对新版EasyGBS做通道测试时,发现通道刷新之后快照数据库内容字段就丢失了。
原本的快照内容显示正常:
刷新之后快照丢失:
这里我们分析应该是刷新时未对快照进行查询,从而导致通道更新的时候快照重新开始记录,但是快照的更新需要等待1分钟,因此刷新通道的前一分钟并无快照生成。
添加如下代码,当用户更新通道之后,去查询此时通道的快照数据是否有数据,如果要有的话,再去读取本地是否有这个文件,要是都符合条件,那就快照字段不更新,否则就更新。
代码语言:javascript复制if channel.Longitude == 0 && channel.Latitude == 0 {
err = tx.Omit("ondemand", "record", "record_plan", "custom_id", "gbs_longitude", "gbs_latitude", "record_plan_switch", "audio", "cdn", "snap").Save(channel).Error
} else {
err = tx.Omit("ondemand", "record", "record_plan", "custom_id", "record_plan_switch", "audio", "cdn", "snap").Save(channel).Error
}
if err != nil {
log.Println("save channel error ", err.Error())
tx.Rollback()
return
}
检查快照更新,刷新通道后快照依然存在。