zoukankan      html  css  js  c++  java
  • EasyNVR通过国标GB28181协议级联出现报错及播放不了的问题调整

    经常使用EasyNVR产品的用户都知道,作为音视频行业互联网直播平台,EasyNVR主要功能在于通过RTSP/ONVIF协议,接入前端音视频采集设备,通过EasyNVR软硬件将拉取过来的音视频流转化给适合全平台播放的RTMP、HTTP-FLV、HLS格式,极大方便了用户进行网页直播、微信直播及接入自身业务平台。

    在经过今年年初的调整之后,EasyNVR已经支持GB国标级联了,部分用户在测试新版EasyNVR时反馈EasyNVR国标级联出现了两个问题:

    1.EasyNVR国标级联保存配置时会一直提示:上一个配置在启动中,请稍后启动!

    查看代码后发现级联注册失败会出现递归死循环:

    此处需要将递归的代码注释了,并在调用函数的地方传递退出的通道信号就可以解决。

    2.另一个情况是EasyNVR配置了国标级联信息和通道后,上级平台播放不了,查看日志发现代码panic了:

    panic: runtime error: invalid memory address or nil pointer dereference

    在查看具体的报错的代码后,发现是因为普通的推流和国标的推流是分开的,StreamClient是分开实例化的,而最终调用的推流方法是一致的。但是前几天优化了推流代码,加了几个属性,而属性值的初始化只在普通推流实现了,所以在国标推流中会出现panic。

    该问题的解决就是在国标的StreamClient实例化时也初始化了几个新加的属性,测试播放后正常了。

  • 相关阅读:
    互斥锁Mutex与信号量Semaphore的区别
    c/c++强制类型转换
    c++中的隐藏、重载、覆盖(重写)
    运算符重载详解
    类的大小
    C++ static、const和static const 以及它们的初始化
    一种隐蔽性较高的Java ConcurrentModificationException异常场景
    Java编码常见的Log日志打印问题
    Java编程常见缺陷汇总(一)
    Java字符串连接的多种实现方法及效率对比
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/15509352.html
Copyright © 2011-2022 走看看