简介

  • 查看解码CPU利用率
    • 进程名: r listen
    • 进程ID:1293

需求

  • 算法
    • 安全帽检测
    • 反光衣检测
    • 区域入侵
    • 烟火检测
  • 业务
    • 四路,4fps
    • 轮询
    • 任务配置
    • 画区域

任务分割

  • 当前主要任务:
    • 搞清楚任务管理界面,轮询功能的业务逻辑

轮询业务

  • 环境
    • 创建一个轮询任务,必须要绑定至少两个算法,当前绑定算法为 安全帽检测 和 区域入侵检测。
    • 配置可选项为 算法运行时间,目前都配置三分钟
    • 当前配置的摄像头为 : rtsp://192.169.4.16/test-phone-Helmet.mp4
  • 现象
    • 安全帽
      • 第一次告警,时间:2023-05-22 17:59:20 ;
      • 随后,持续告警安全帽,最后一次告警,时间: 2023-05-22 18:02:02;
    • 区域入侵
      • 第一次告警,时间:2023-05-22 18:02:27
      • 随后,持续告警区域入侵,最后一次告警,时间:2023-05-22 18:05:13
    • 接下来,重复安全帽检测
      • 第一次告警,时间:2023-05-22 18:05:20
      • 随后,持续告警安全帽,最后一次告警,时间:2023-05-22 18:08:05
    • 接下来,重复区域入侵检测
      • 第一次告警,时间:2023-05-22 18:08:21
      • 随后,持续告警区域入侵,最后一次告警,时间:2023-05-22 18:11:12
  • 结论一
    • 轮询启用,一个任务,一个视频流,配置多个算法,每个算法配置运行时间,相当于配置运行的时间片
    • 任务启动后,从当前时间开始计时,执行绑定的第一个检测算法,运行时间为该算法所配置的运行时间,达到运行时间后,启用绑定的下一个检测算法,同时开始计时
    • 重复以上步骤
  • 推论一
    • 类似于时间片轮转调度算法,一个拉取了视频流的任务相当于一个CPU资源,每一个算法相当于一个进程,在配置时,给每个算法配置 算法运行时间,相当于给每个进程分配一个固定大小的时间片,这些算法存放在一个队列中,规则为FIFO
    • 取队列头部的算法使用,当这个算法在任务上生效时,相当于这个算法独占了这个任务(视频流资源),在内部启动一个计时器,当时间片用完时,这个算法让出任务(视频流资源),放到队列尾部,等待下一次使用
    • 下一个算法为队列头部的算法,其占用任务(视频流资源),同时其内存启动该任务的计时器,当该任务的时间片用完时,也让出任务(视频流资源),下一个算法占用,以此类推

阶段启用业务

  • 环境
    • 创建一个阶段启用任务,可以绑定多个算法
    • 需要配置的选项为 算法运行开始时间 和 算法运行结束时间
      • 安全帽配置的算法运行开始时间为 19:40, 算法运行结束时间为 19:45
      • 区域入侵配置的算法运行开始时间为 19:50, 算法运行结束时间为 19:55
    • 配置的算法阶段启用时间段不能重合,一点都不能重合,是串行的
    • 当前配置的摄像头为:rtsp://192.169.4.16/test-phone-Helmet.mp4
  • 现象
    • 创建任务后,不会立即显示视频流,等到19:40才会有视频流显示,同时会有安全帽的告警时间产生;时间到19:45后,视频流不再显示,同时安全帽的告警时间也不产生
    • 等到时间到19:50,视频流再次显示,同时区域入侵的告警事件产生;时间到19:55后,视频流不再显示,同时告警也不再显示
  • 结论一
    • 阶段启用任务,一个任务,一个视频流,配置多个算法,每个算法配置启用的时间 和 结束的时间,这个时间的单位是小时和分钟,意味着如果不停止任务,每天的配置时间内会启动检测,
  • 推论一
    • 类似于比特大陆盒子上的设置任务有效时间,只不过这个启动和停止是任务方面的,到时间了启动任务,超过了时间段,就停止任务,第二天同一时间再启动和停止任务

web后端

  • 环境
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
      root@RV1126_RV1109:/usr/local/bin# ls
      node_srv
      root@RV1126_RV1109:/usr/local/bin# ldd node_srv 
      	linux-vdso.so.1 (0xaefd4000)
      	libgddi_codec.so.1 => /usr/local/lib/libgddi_codec.so.1 (0xa6a63000)
      	libavcodec.so.58 => /usr/local/lib/libavcodec.so.58 (0xa5be1000)
      	libavformat.so.58 => /usr/local/lib/libavformat.so.58 (0xa5a27000)
      	libavutil.so.56 => /usr/local/lib/libavutil.so.56 (0xa578f000)
      	libswscale.so.5 => /usr/local/lib/libswscale.so.5 (0xa572f000)
      	libgddi_rockchip_sdk.so.20 => /usr/local/lib/libgddi_rockchip_sdk.so.20 (0xa5511000)
      	librga.so => /usr/local/lib/librga.so (0xa54ec000)
      	librockchip_mpp.so.1 => /usr/local/lib/librockchip_mpp.so.1 (0xa53b5000)
      	libgddi_post.so.1 => /usr/local/lib/libgddi_post.so.1 (0xa52fe000)
      	libopencv_calib3d.so.4.4 => /usr/local/lib/libopencv_calib3d.so.4.4 (0xa51f1000)
      	libopencv_videoio.so.4.4 => /usr/local/lib/libopencv_videoio.so.4.4 (0xa51a0000)
      	libopencv_imgcodecs.so.4.4 => /usr/local/lib/libopencv_imgcodecs.so.4.4 (0xa5057000)
      	libopencv_imgproc.so.4.4 => /usr/local/lib/libopencv_imgproc.so.4.4 (0xa4d9c000)
      	libopencv_core.so.4.4 => /usr/local/lib/libopencv_core.so.4.4 (0xa4b79000)
      	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xa4b63000)
      	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xa4b3d000)
      	libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0xa49f4000)
      	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xa498b000)
      	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xa488c000)
      	/lib/ld-linux-armhf.so.3 (0xa6eee000)
      	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xa4863000)
      	libavfilter.so.7 => /usr/local/lib/libavfilter.so.7 (0xa45e9000)
      	libswresample.so.3 => /usr/local/lib/libswresample.so.3 (0xa45c9000)
      	libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0xa45ae000)
      	librknn_api.so => /usr/local/lib/librknn_api.so (0xa459c000)
      	libopencv_features2d.so.4.4 => /usr/local/lib/libopencv_features2d.so.4.4 (0xa4513000)
      	libopencv_flann.so.4.4 => /usr/local/lib/libopencv_flann.so.4.4 (0xa44cd000)
      	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xa44ba000)
      	libpostproc.so.55 => /usr/local/lib/libpostproc.so.55 (0xa44a1000)
    
  • C 动态库
    • libpthread
    • libm
    • libc
    • libgcc_s
    • libdrm
    • libdl
  • C++ 动态库
    • libstdc++
  • FFmpeg 动态库
    • libavcodec
    • libavformat
    • libavutil
    • libswscale
    • libavfilter
    • libswresample
    • libpostproc
  • OpenCV 动态库
    • libopencv_calib3d
    • libopencv_videoio
    • libopencv_imgcodecs
    • libopencv_imgproc
    • libopencv_core
    • libopencv_features2d
    • libopencv_flann
  • rk 动态库
    • librga
    • librt
    • librknn_api
  • rockchip 动态库
    • libgddi_codec
    • librockchip_mpp
    • libgddi_rockchip_sdk
    • libgddi_post
  • rockchip 动态库详细信息 ldd -v node_srv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    	/usr/local/lib/libgddi_codec.so.1:
    		libswscale.so.5 (LIBSWSCALE_5) => /usr/local/lib/libswscale.so.5
    		libavformat.so.58 (LIBAVFORMAT_58) => /usr/local/lib/libavformat.so.58
    		ld-linux-armhf.so.3 (GLIBC_2.4) => /lib/ld-linux-armhf.so.3
    		libavfilter.so.7 (LIBAVFILTER_7) => /usr/local/lib/libavfilter.so.7
    		libavcodec.so.58 (LIBAVCODEC_58) => /usr/local/lib/libavcodec.so.58
    		libavutil.so.56 (LIBAVUTIL_56) => /usr/local/lib/libavutil.so.56
    		libgcc_s.so.1 (GCC_3.4) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.15) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.18) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.5) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.9) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.21) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.14) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.11) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_ARM_1.3.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.22) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.19) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    	/usr/local/lib/libgddi_rockchip_sdk.so.20:
    		libm.so.6 (GLIBC_2.27) => /lib/arm-linux-gnueabihf/libm.so.6
    		libm.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libm.so.6
    		ld-linux-armhf.so.3 (GLIBC_2.4) => /lib/ld-linux-armhf.so.3
    		libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libpthread.so.0 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libpthread.so.0
    		libstdc++.so.6 (GLIBCXX_3.4.20) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.8) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.1) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.9) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.9) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.11) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.14) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.21) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_ARM_1.3.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.22) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.15) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libc.so.6 (GLIBC_2.16) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.15) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.7) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.17) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.11) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.25) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    	/usr/local/lib/librockchip_mpp.so.1:
    		libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libpthread.so.0 (GLIBC_2.12) => /lib/arm-linux-gnueabihf/libpthread.so.0
    		libpthread.so.0 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libpthread.so.0
    		libm.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libm.so.6
    		libm.so.6 (GLIBC_2.15) => /lib/arm-linux-gnueabihf/libm.so.6
    		libc.so.6 (GLIBC_2.8) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.28) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.17) => /lib/arm-linux-gnueabihf/libc.so.6
    		libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    	/usr/local/lib/libgddi_post.so.1:
    		ld-linux-armhf.so.3 (GLIBC_2.4) => /lib/ld-linux-armhf.so.3
    		libm.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libm.so.6
    		libgcc_s.so.1 (GCC_3.4) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
    		libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.15) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.8) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.9) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.18) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.5) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.9) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.21) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.14) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.11) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3.11) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_ARM_1.3.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.22) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4.19) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (GLIBCXX_3.4) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    		libstdc++.so.6 (CXXABI_1.3) => /lib/arm-linux-gnueabihf/libstdc++.so.6
    
  • 推论一
    • libgddi_codec,视频解码部分
    • librockchip_mpp,媒体处理部分
    • libgddi_rockchip_sdk,推理部分
    • libgddi_post,web后端

MediaServer

  • 环境
    • 盒子中路径为 /proc/1860/cwd/
    • docker 容器名称为 zl ,路径为 /zlmediakit/
  • ldd MediaServer
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
      [root@RV1126_RV1109:/proc/1860]# docker exec -it zl bash 
      root@ad140a93bf2b:/zlmediakit# ldd MediaServer 
      	linux-vdso.so.1 (0xaefd6000)
      	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xa6b57000)
      	libssl.so.1.1 => /lib/arm-linux-gnueabihf/libssl.so.1.1 (0xa6af3000)
      	libcrypto.so.1.1 => /lib/arm-linux-gnueabihf/libcrypto.so.1.1 (0xa6945000)
      	libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0xa67fc000)
      	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xa6793000)
      	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xa676a000)
      	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xa666b000)
      	/lib/ld-linux-armhf.so.3 (0xa6f8e000)
      	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xa6658000)
    
  • cwd/config.ini
    • 有一些关于http的配置

任务-业务-小结(20230522)

  • web后端,业务逻辑,认为都是使用C++写的,没有调用第三方动态库库,有使用一些第三方开源库的代码,例如日志使用了spdlog,其他功能使用了boost库
  • 任务管理方面
    • 持续运行,一个任务绑定一个算法,启动即运行
    • 轮询,一个任务绑定多个算法,至少两个算法,为每个算法设置运行时长,每个算法依次工作各自时长,循环工作
    • 阶段运行,一个任务可以绑定多个算法,也可以是一个算法,并配置算法运行启动时间和运行停止时间,多个算法的时间段不可重叠

业务分析

区域配置

  • 现象
    • 工地盒子配置了区域,检测目标在该区域内,才有检测框
  • 小结:
    • 在视频源上对检测框做了筛选,只有在指定区域内才会显示到前端

附录

  • 参考截图
    • ./data