国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?
国标GB28181协议是由公安部提出的国家统一标准视频流传输协议,通过流媒体服务器表现的话,就是国标流媒体视频平台EasyGBS。EasyGBS的存储方式包括设备存储和云端存储,为了能够随时随地调取视频流进行播放,很多用户都会选择云端存储。
EasyGBS的云端录像会丢失吗
问题复现
我们的官网一直由EasyGBS的演示平台让大家参考,我们研发调用演示平台的云端录像时,发现原本储存在云端的视频录像丢失不见了。这里我们来简单复现一下这个问题。
接入一个正在使用的摄像头,可以看到这个设备录像在开始的时候是存在的,并且在一个小时后能够正常播放。
当这个通道离线后,我们点击删除这个通道:
这个时候再来看设备的云端录像,就会发现这个设备对应的云端录像丢失了。
问题分析
起初我以为是由于本地的录像文件夹文件被删除了,才导致录像丢失,但是到文件夹路径去看,发现视频文件都还在,因此可以排除我最开始的猜测。
然后开始排查代码,录像列表在扫描本地文件夹的时候,当设备通道离线被删除,列表会剔除这些设备的通道录像,所以前端页面不显示。
解决方案
读取本地录像列表的时候如果通道被删除了,就是用自定义的名字和状态,并且录像也不剔除
for _, v := range results {
if v.DeviceId == fs[0] && v.ChannelId == fs[1] {
is_cunzai = true
}
}
if is_cunzai {
ch := models.GetChannel(fs[1], fs[0])
//if ch == nil {
// continue
//}
dv := models.GetDevice(fs[0])
name := "-"
status := "3" //1 在线 2 离线 3 已删除
devicename := "-"
if dv != nil {
devicename = dv.Name
}
if ch != nil {
name = ch.Name
if ch.Online() {
status = "1"
} else {
status = "2"
}
}
显示效果:
一般来讲,我们EasyGBS中云端录像的保存较为完善,若非操作不当或者刻意删除,云端录像不会无故丢失。