技术分享EasyNVR底层nginx崩溃后会导致摄像头视频流无法播放的情况处理

Posted EasyNVR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享EasyNVR底层nginx崩溃后会导致摄像头视频流无法播放的情况处理相关的知识,希望对你有一定的参考价值。

前几天我们接到某个项目团队的反馈,在 EasyNVR 的客户现场中,突然出现无法播放摄像头的情况。经检查后发现是底层 nginx 分发软件崩溃消失了。造成底层nginx崩溃的原因有很多,我们在网络中可以搜集到的原因就有内存不足导致的崩溃、高负载导致的崩溃、穿透导致的崩溃等,但是在本问题中,我们还需进一步检查崩溃原因。

image.png

在该问题中,我们查询EasyNVR日志如下:

56.png

从日志中我们可以发现,在相同的时间,用户修改了录像、端口等信息,nginx 进行
reload 后,原先 10554 端口为 rtsp 端口,重新绑定会出现问题。

因此不进行 reload 模式操作,直接进行重启即可解决该问题。

重启 nginx 的参考代码如下:

// 如果需要重启 nginx
if restartNginx {
   err := dss.Stop()
   if err != nil {
      log.Println(err)
      c.AbortWithStatusJSON(http.StatusInternalServerError, "nginx 停止失败,请手动重启程序!")
      return
   } else {
      if err = dss.Start(); err != nil {
         log.Println(err)
         c.AbortWithStatusJSON(http.StatusInternalServerError, "nginx 启动失败,请手动重启程序!")
         return
      }
   }
}

之前我们还介绍过 EasyNVR 开启多 nginx 来进行分流的方法,大家可以参考:EasyNVR搭建多nginx实现分流方法介绍

以上是关于技术分享EasyNVR底层nginx崩溃后会导致摄像头视频流无法播放的情况处理的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Nginx固定转发EasyNVR的视频流?

如何使用Nginx代理动态转发EasyNVR的视频流?

EasyNVR开发视频流直播时实时录像功能过程分享

EasyNVR通道离线但视频流可正常播放是什么原因导致的?

如何通过Nginx代理将EasyNVR的视频流代理到其他IP地址?

EasyNVR通过iframe分享视频播放出现加载异常的问题解决