欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

程序员文章站 2022-07-06 09:39:32
...

国标GB28181协议是由*部提出的国家统一标准视频流传输协议,通过流媒体服务器表现的话,就是国标流媒体视频平台EasyGBS。EasyGBS的存储方式包括设备存储和云端存储,为了能够随时随地调取视频流进行播放,很多用户都会选择云端存储。

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

EasyGBS的云端录像会丢失吗

问题复现

我们的官网一直由EasyGBS的演示平台让大家参考,我们研发调用演示平台的云端录像时,发现原本储存在云端的视频录像丢失不见了。这里我们来简单复现一下这个问题。

接入一个正在使用的摄像头,可以看到这个设备录像在开始的时候是存在的,并且在一个小时后能够正常播放。

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

当这个通道离线后,我们点击删除这个通道:

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

这个时候再来看设备的云端录像,就会发现这个设备对应的云端录像丢失了。

问题分析

起初我以为是由于本地的录像文件夹文件被删除了,才导致录像丢失,但是到文件夹路径去看,发现视频文件都还在,因此可以排除我最开始的猜测。

国标GB28181协议视频平台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"
					}
				}

显示效果:

国标GB28181协议视频平台EasyGBS的云端录像能够永久保存吗?会不会丢失?

一般来讲,我们EasyGBS中云端录像的保存较为完善,若非操作不当或者刻意删除,云端录像不会无故丢失。