前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTSP协议安防视频智能平台EasyNVR通道可生成快照却无法播放问题排查

RTSP协议安防视频智能平台EasyNVR通道可生成快照却无法播放问题排查

作者头像
EasyNVR
发布2021-02-22 14:34:09
3750
发布2021-02-22 14:34:09
举报
文章被收录于专栏:EasyNVREasyNVR

TSINGSEE青犀视频开发的RTSP协议视频智能分析平台EasyNVR是目前市面上比较完善且稳定的视频流媒体直播分发平台。EasyNVR内接入的视频通道都可以通过平台进行网页直播,并且支持市面上大部分的RTSP/Onvif协议设备:IP Camera/NVR/DVR/编码器等。

当我们测试的时候,有时会出现EasyNVR通道在线,也能够正常生成快照,并且其他功能都是正常的,但是视频无法播放的情况。

由于其他功能正常,所以我们查看logs文件下的log日志也无法检查出原因,说明EasyNVR本身运行都很正常。

随后我们发现nginx的进程不存在了,观察日志发现到某一时间,就不打印了,这个停止打印的时间,应该就是nginx正常运行的最后时间,停止打印后,nginx进程就停止了。

发现问题所在后,我们就在EasyNVR添加了定时任务,定时去监听nginx的进程是否存在,如果不存在就重新启动nginx,以此来避免此类问题的出现。

在EasyNVR上实现该功能之前先通过以下代码实现的小工具进行分析。

代码语言:javascript
复制
func main() {
   var inputStr string
   for {
      fmt.Println("---------------------------------------------------")
      fmt.Print("1->退出  ")
      fmt.Print("2->显示进程  ")
      fmt.Print("3->结束进程  ")
      fmt.Println("4->显示全部进程")
      fmt.Println("---------------------------------------------------")
      fmt.Scanln(&inputStr)
      if inputStr == "1" {
         fmt.Println("已退出...")
         break
      } else if inputStr == "2" {
         fmt.Print("请输入进程名称:")
         var processName string
         fmt.Scanln(&processName)
         if len(processName) == 0 {
            fmt.Println("进程名称不可为空!")
         } else {
            text := "imagename eq " + processName + "*"
            listProcess(text)
         }
      } else if inputStr == "3" {
         fmt.Print("请输入要结束的进程名称:")
         var processName string
         fmt.Scanln(&processName)
         if len(processName) == 0 {
            fmt.Println("进程名称不可为空!")
         } else {
            text := "imagename eq " + processName + "*"
            killProcess(text)
         }
      } else if inputStr == "4" {
         listAllProcess()
      } else {
         fmt.Println("请输入正确的参数!")
      }
   }
   fmt.Scanln(&inputStr)
}
 
func listProcess(text string) {
   fmt.Println(text)
   cmd := exec.Command("tasklist", "/fi", text)
   out, err := cmd.CombinedOutput()
   if err != nil {
      log.Fatal(err)
   }
   fmt.Println(string(out))
}
func listAllProcess() {
   cmd := exec.Command("tasklist")
   out, err := cmd.CombinedOutput()
   if err != nil {
      log.Fatal(err)
   }
   fmt.Println(string(out))
}
 
func killProcess(text string) {
   cmd := exec.Command("taskkill", "/f", "/t", "/fi", text)
   out, err := cmd.CombinedOutput()
   if err != nil {
      log.Fatal(err)
   }
   fmt.Println(string(out))
}

Windows下可以通过该方法查询nginx进程是否存在:

nginx进程不存在输出:

nginx进程存在输出:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档