国标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中云端录像的保存较为完善,若非操作不当或者刻意删除,云端录像不会无故丢失。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结