国标GB28181视频平台EasyGBS视频流会卡顿吗?网络卡顿情况下能接收视频流吗?
这几天翻了一下以前的博文,发现讲到频率比较多的还是关于视频流的卡顿、延时相关的问题,我已经迫切的感受到了大家对于视频流质量的要求了。
但是我不能否认,视频质量在5G时代,也是有很大发展空间的,像我们开发的支持国标GB28181协议的视频平台EasyGBS,可以说是一个比较完善成熟的视频平台了,但也会遇到视频流卡顿,或者无法播放的问题。
网络是衡量视频流质量高低的一个重要标准,当摄像头网络卡顿时,接收视频流的平台EasyGBS无疑会收到影响,点击播放视频的时候页面请求会一直得不到响应,导致程序误以为系统崩溃卡死。
经排查发现,是在网页点击播放之前,会向后端去请求播放地址,后端请求播放地址的时候回去获取视频编码,获取方式是循环的去读取流信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 | VideoCode := 0 for { tempstream := uas.Server.GetStreamFromRedis(stream.StreamID) if tempstream != nil { VideoCode = tempstream.VideoCode } if VideoCode == 0 { time.Sleep(time.Second * 1) continue } break } |
这种做法不好之处就是没有添加超时返回,导致视频一直请求,但又一直得不到响应。
解决方案就是添加指定次数后超时返回,修改代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | VideoCode := 0 loopcount := 0 for { tempstream := uas.Server.GetStreamFromRedis(stream.StreamID) if tempstream != nil { VideoCode = tempstream.VideoCode } if loopcount >= 5 { break } if VideoCode == 0 { time.Sleep(time.Second * 1) loopcount++ continue } break } |
修改过后,假如摄像头网络不好,超时也会有返回数据,从而让服务器能够取读。
【推荐】国内首个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攻略 —— 某应届生求职总结