• gb28181 网守网关分离+推理服务架构


    1、网关网守如何分离

    我们定义gb协议中得网守为sip信令服务器,协议转换服务为网关。考虑有时需要内部网守信令服务,因此架构中,网关和网守可以分离, 内部网守和外网上云网关连接为tcp 连接,整体架构则如下所示:

    请添加图片描述

    1、搜索服务、

    1 、使用ssdp 协议和 其他组播协议来进行搜索摄像头,
    2、 使用onvif协议来补充推算所有设备,
    3、 使用snmp协议来搜索其他相关设备,尽可能推知所有设备,并且列出到智能逻辑列表中

    2、可视化界面配置服务

    在这里插入图片描述
    从界面中可以看到,我们的服务分化架构:
    1 搜索服务 包含被搜索
    2 信令网关
    3 存储服务
    4 媒体服务器引擎
    5 展示播放
    6 事件,事件本身和脚本又融合在一起,可以看一下的lua脚本示例,在某一种网络链接,断开的时候,逻辑
    可以放置到脚本中,本身事件处理又融合到一个单独的服务中,这样代码比较集中。模式就是所有事件排队到队列中
    然后,交给脚本处理。

    服务描述

    网守服务从服务器中分离出来?,实际上在制作得过程中,网守网关本身就是一个进程,甚至客户端可以放进进程中,这种启动方式作为配置项来启动,可以单独启动网守,或者单独启动网关,或者同时启动网关网守,有两种方式作为启动模式:
    1 是在配置界面中设置启动方式,明确定义启动模式,这就要求有一个配置界面,可以在配置界面中选取启动方式
    2 启动方式为谁先启动谁就作为网守服务,另外启动ssdp协议作为发现服务,这一点非常重要,所有网守和网关都可以。

    1.1 网关服务器

        网关服务器负责进行网络协议转换。在一个网中,网关可以有多个,网守可以将不同得摄像头推流分配到不同得网关,在内网得服务中可以使用mdns协议,mdns 使用组播地址为: 224.0.0.251 ,端口为5353,使用mdns协议得好处是可以同时发现投屏得airplay设备。

    1.2 网守服务

        网守服务作为独立进程进行服务时,还有一个功能就是连接外部网关服务器,网守在内网里启动得时候,可以直接连接到外网得网络服务。
        这里有一个问题,如何同时可以让内网得网关和外网得网关同时得到数据?

    1.3 推理服务

    推理服务就是在服务器中的一个角色,使用的方式为:
    1 opencv
    opencv加载深度模型,模型放置到目录中,自动搜索目录下的所有模型,具体哪一路流对应哪些模型,有lua脚本来配置,而脚本的生成又有界面来生成。
    2 yolo
    3 onnx
    4 python脚本
    直接放置python脚本到目录下面,自动搜索目录下的所有python脚本,具体哪一路对应哪个python脚本,有lua脚本来配置。

    1.4 存储服务

    存储服务分为两种:
    1 服务器智能逻辑面板指定流进行存储
    2 事件发生前后自动进行事件的流存储,如存储该事件前后10分钟的视频。

    1.5 事件

    使用脚本化来制作各类事件发生和处理,本身事件的处理过程和逻辑放置到脚本中,脚本主要使用集中方式:
    1 python 脚本
    2 lua 脚本
    3 c++ 脚本
    4 js 脚本

    function main (clientId, message)
        -- echo back the message
        _send(clientId, message)
    end
    
    -- notify about connects
    function on_connect(clientId)
        _sendAll("ClientID " .. clientId .. " just joined the server")
    end
    
    -- ... and disconnects
    function on_disconnect(clientId)
        _sendAll("ClientID " .. clientId .. " just quit the server")
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    sdp 协议描述

    ts流
    m=video 8002 RTP/AVP 96
    a=rtpmap:96 MP2T/90000

    v=0
    o=- 20140233 20140238 IN IP4 192.168.2.105 //#1
    s=rtp PS stream
    i=N/A
    c=IN IP4 192.168.2.105 //#2
    t=0 0
    a=tool:ACME RTSP server
    a=recvonly
    a=type:broadcast
    a=charset:UTF-8
    a=framerate:16
    m=video 9004 RTP/AVP 96 //#3 ,端口要是偶数
    b=RR:0
    a=rtpmap:96 MP2P/90000

    未完待续。。。。

  • 相关阅读:
    1-Docker安装MySQL8.0
    ApplicationContextAware、ApplicationContext
    网络安全笔记--SQL注入
    Python划分训练集与测试集KFold交叉验证
    Vue教学19:Element UI组件深入探索,构建精致的Vue应用界面
    闪马智能“加速奔跑”, 打造智慧建造“示范基地”
    java基于ssm的体育馆票务管理系统
    测量信号的功率
    FFmpeg 的简介与安装
    CMU15445 (Fall 2020) 数据库系统 Project#2 - B+ Tree 详解(上篇)
  • 原文地址:https://blog.csdn.net/qianbo042311/article/details/125139993