GB/T28181-2022规范解读、应用场景和技术实现探究

news2025/1/18 8:59:37

GB/T28181-2022和GB/T28181-2016区别

GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》与 GB/T28181-2016 相比,主要有以下区别:

  1. 术语和定义方面
    • 术语删减:GB/T28181-2022 删除了 “联网系统信息”“数字接入”“模拟接入”“模数混合型监控系统”“数字型监控系统”“监控点”“监控中心” 等术语的定义,使标准更加简洁,适应监控技术的发展趋势,因为一些传统的监控接入方式逐渐被淘汰。
    • 术语更改:更改了 “SIP 监控域”“非 SIP 监控域”“级联”“互联” 的术语和定义,表述更加准确和清晰,便于理解和应用。
    • 增加缩略语:2022 版增加了 “PTZ” 的缩略语,方便对云台控制相关功能的表述和理解。
  2. 系统结构和协议方面
    • 互联结构示意图更改:GB/T28181-2022 更改了 “SIP 监控域互联结构示意图”,对监控系统的互联结构展示进行了优化和调整,使其更符合实际应用场景。
    • 通信协议结构图变化:2022 版更改了 “联网系统通信协议结构图”,媒体流通道增加了 H.265、G.722.1、AAC 等编码格式的支持,丰富了媒体流的传输方式,提高了音视频传输的质量和效率。
    • 增加 RTP 时间戳要求:2022 版增加了媒体流数据传输的 RTP 时间戳要求,保证了视频时间的真实性和实时性,防止数据被篡改。
  3. 技术要求方面
    • 网络传输带宽和视频帧率要求:GB/T28181-2022 更改了网络传输带宽要求和视频帧率要求。例如,2016 版对单路设备接入带宽有具体数值要求,而 2022 版则更灵活,满足要求且留有余量即可;帧率统一要求为 25fps(2016 版有多种帧率要求)。
    • 编码格式支持:2022 版增加了对 H.265、AAC 的支持,强化了对新一代音视频编码格式的适应性,有助于提高系统的性能和兼容性。
    • 协议引用更改:更改了 SDP 协议的引用,使协议的应用更加规范和准确。
  4. 功能和命令方面
    • 增加功能查询命令:GB/T28181-2022 增加了看守位信息查询、巡航轨迹列表查询、巡航轨迹查询、PTZ 精准状态查询、存储卡状态查询及应答命令等,细化和扩展了系统的功能查询能力,方便对监控设备的状态和信息进行更全面的了解。
    • 增加事件订阅和通知:增加了 PTZ 精准位置变化事件订阅和通知,提高了对云台控制的实时监控和反馈能力。
    • 增加软件升级和图像抓拍相关内容:增加了设备软件升级、图像抓拍信令流程和协议接口,完善了系统的维护和管理功能。
  5. 安全性要求方面:GB/T28181-2022 更改了传输、交换、控制安全性要求,提高了系统的安全性能,保障监控数据的保密性、完整性和可用性。
  6. 附录内容方面
    • 附录调整和补充:2022 版对多个附录进行了更改、补充和完善,如更改了附录 D 基于 TCP 协议的视音频媒体传输要求(原 2016 版为附录 L);更改了附录 B、C、E、F、G 等,增加了附录 H(摄像机和平台路径选择技术要求)、附录 I(协议版本标识)、附录 O(摄像机采集部位类型代码)等,使标准的附录内容更加丰富和详细。
    • 标签和字段格式变更:在一些附录中,对标签和字段格式进行了变更,如目录响应报文中的 info 标签修改为 extrainfo 标签等,但部分变更后的标签在实际应用中可能尚未使用。

GB28181应用场景

GB28181 即《公共安全视频监控联网系统信息传输、交换、控制技术要求》,其主要使用场景如下:

一、公共安全领域

  1. 社会治安监控
    • 在城市的街道、广场、公园等公共场所安装的视频监控设备,可以通过 GB28181 协议接入到公安部门的视频监控联网平台。这样,警方可以实时监控这些区域的治安情况,及时发现和处理违法犯罪行为。
    • 例如,当发生盗窃、抢劫等案件时,警方可以通过调阅监控录像,追踪犯罪嫌疑人的行踪,为案件的侦破提供重要线索。
  2. 交通管理
    • 道路上的交通监控摄像头可以采用 GB28181 协议,将视频图像传输到交通管理部门的指挥中心。指挥中心可以实时监控道路交通流量、车辆行驶状态等信息,及时发现交通拥堵、事故等情况,并采取相应的疏导和处理措施。
    • 例如,在高峰期,交通管理部门可以通过监控画面,及时调整信号灯时间,优化交通流量;在发生交通事故时,可以快速派遣交警前往现场处理,并通过监控了解事故情况,为救援和处理提供依据。
  3. 应急指挥
    • 在发生自然灾害、事故灾难等突发事件时,GB28181 协议可以实现不同部门之间的视频监控资源共享,为应急指挥提供全面的现场信息。
    • 例如,在地震、洪水等灾害发生时,消防、救援、医疗等部门可以通过共享的视频监控画面,了解灾区情况,制定合理的救援方案,提高救援效率。

二、企业和机构内部安全管理

  1. 工厂和园区监控
    • 大型工厂、工业园区可以利用 GB28181 协议搭建自己的视频监控联网系统,实现对生产区域、仓库、办公区域等的全面监控。企业管理人员可以通过该系统实时了解生产情况、员工工作状态以及安全隐患等,提高企业的管理效率和安全性。
    • 例如,在化工企业中,可以通过监控摄像头实时监测危险区域的情况,一旦发现异常情况,及时采取措施,防止事故的发生。
  2. 金融机构安保
    • 银行、证券交易所等金融机构可以采用 GB28181 协议的视频监控系统,对营业场所、金库、自助银行等区域进行监控。安保人员可以通过监控画面实时掌握各个区域的安全状况,防范盗窃、抢劫等犯罪行为。
    • 例如,当有可疑人员在自助银行附近徘徊时,安保人员可以通过监控及时发现,并采取相应的防范措施。
  3. 学校和医院安全管理
    • 学校和医院可以利用 GB28181 协议的视频监控系统,保障校园和医院的安全。学校可以监控教学楼、操场、宿舍等区域,防止校园暴力、盗窃等事件的发生;医院可以监控门诊大厅、病房、药房等区域,确保患者和医护人员的安全。
    • 例如,在学校放学期间,保安可以通过监控画面关注校门口的人流情况,维护秩序,保障学生的安全。

三、智能交通领域

  1. 智能公交系统
    • 公交车上安装的视频监控设备可以通过 GB28181 协议将视频图像传输到公交调度中心。调度中心可以实时监控公交车内的情况,了解乘客数量、行为等信息,同时也可以监控公交车的行驶路线和速度,确保公交运行的安全和高效。
    • 例如,当公交车上发生纠纷或突发事件时,调度中心可以及时了解情况,并通知司机采取相应的措施;在公交车超速或偏离路线时,调度中心可以及时提醒司机,保证行车安全。
  2. 电子警察系统
    • 道路上的电子警察摄像头可以采用 GB28181 协议,将违法车辆的照片和视频信息传输到交通管理部门的违法处理系统。交通管理部门可以通过该系统对违法车辆进行处罚,提高交通执法的效率和公正性。
    • 例如,当车辆闯红灯、超速行驶或违法停车时,电子警察摄像头会自动拍摄照片和视频,并将这些信息传输到违法处理系统,交通管理部门可以根据这些证据对违法车辆进行处罚。

四、跨区域视频监控联网

  1. 城市间视频监控联网
    • 不同城市之间的视频监控系统可以通过 GB28181 协议实现联网,实现跨区域的视频资源共享和协同管理。例如,在追捕犯罪嫌疑人时,多个城市的警方可以通过联网的视频监控系统,共同追踪犯罪嫌疑人的行踪,提高抓捕效率。
  2. 省际视频监控联网
    • 在省级层面,可以通过 GB28181 协议将各个地市的视频监控系统联网,实现全省范围内的视频资源整合和统一管理。这样,省级公安部门可以更加全面地掌握全省的社会治安情况,及时协调各地的警力资源,应对重大突发事件。
    • 例如,在举办重大活动或应对重大自然灾害时,省级公安部门可以通过联网的视频监控系统,统一指挥调度各地的警力和救援力量,确保活动的安全顺利进行和灾害的有效应对。

如何实现GB28181设备对接

一、了解 GB28181 协议

GB28181 即《公共安全视频监控联网系统信息传输、交换、控制技术要求》,它规定了公共安全视频监控联网系统中信息传输、交换、控制的技术要求。主要包括以下几个方面:

  1. 设备注册:设备向平台注册,提供设备信息。
  2. 信令交互:包括设备控制信令、状态查询信令等。
  3. 媒体流传输:视频、音频等媒体流的传输规范。

二、选择开发工具和库

  1. 开发语言:通常可以使用 Java 或 Kotlin 进行 Android 开发。
  2. 网络通信库:由于 GB28181 涉及网络通信,可以考虑使用 OkHttp 等网络请求库来实现与设备和平台的通信。
  3. 媒体处理库:对于媒体流的处理,可以使用 ExoPlayer 等视频播放库来播放接收到的视频流。

三、实现设备注册

  1. 构造注册信令:根据 GB28181 协议规范,构造设备注册的 SIP(Session Initiation Protocol)信令。信令中包含设备的唯一标识、IP 地址、端口号等信息。
  2. 发送注册信令:使用网络通信库将注册信令发送到指定的平台地址。
  3. 处理注册响应:接收平台返回的注册响应信令,解析响应状态码。如果注册成功,则保存平台分配的设备 ID 等信息;如果注册失败,则根据错误码进行相应的处理。

四、信令交互

  1. 设备控制信令:实现对设备的云台控制(上下左右转动、变焦等)、录像控制等功能。构造相应的 SIP 信令并发送到设备,设备接收到信令后执行相应的操作。
  2. 状态查询信令:定期向设备发送状态查询信令,获取设备的在线状态、录像状态等信息。设备返回状态响应信令,解析后更新设备状态显示。

五、媒体流接收和播放

  1. 接收媒体流:当设备注册成功并建立连接后,设备会根据请求发送视频和音频媒体流。在 Android 端,使用网络通信库接收媒体流数据。
  2. 解码和播放:使用媒体处理库(如SmartPlayer)对接收的媒体流进行解码和播放。将媒体流数据传递给播放器进行播放显示。

六、错误处理和异常情况处理

  1. 网络连接问题:处理网络连接中断、超时等情况。可以设置重试机制,尝试重新连接设备或平台。
  2. 信令错误:对错误的信令响应进行处理,如解析错误码并给出相应的提示信息。
  3. 媒体流异常:处理媒体流中断、卡顿等情况。可以尝试重新建立媒体流连接或调整播放器参数以提高播放稳定性。

Android平台实现GB28181设备对接

以大牛直播SDK推出的Android平台GB28181接入SDK(以下简称SmartGBD)为例,SmartGBD可实现不具备国标音视频能力的 Android终端,通过平台注册接入到现有的GB/T28181—2016或GB/T28181—2022服务,可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终端等场景,可能是业内为数不多功能齐全性能优异的商业级水准GB28181接入SDK。

Android终端除支持常规的音视频数据接入外,还可以支持移动设备位置(MobilePosition)订阅和通知、图像抓拍、语音广播和语音对讲、历史视音频下载和回放,支持对接数据类型如下:

  1. 编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型),其中,Android平台前后摄像头数据,或者屏幕数据,或者Unity拿到的数据,均属编码前数据;
  2. 编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据);
  3. 拉取RTSP或RTMP流并接入至GB28181平台(比如其他IPC的RTSP流,可通过Android平台GB28181接入到国标平台)。

功能支持

  •  [视频格式]H.264/H.265(Android H.265硬编码);
  •  [音频格式]G.711 A律、AAC;
  •  [音量调节]Android平台采集端支持实时音量调节;
  •  [H.264硬编码]支持H.264特定机型硬编码;
  •  [H.265硬编码]支持H.265特定机型硬编码;
  •  [软硬编码参数配置]支持gop间隔、帧率、bit-rate设置;
  •  [软编码参数配置]支持软编码profile、软编码速度、可变码率设置;
  •  支持横屏、竖屏推流;
  •  Android平台支持后台service推送屏幕(推送屏幕需要5.0+版本);
  • 支持纯视频、音视频PS打包传输;
  • 支持RTP OVER UDP和RTP OVER TCP被动模式(TCP媒体流传输客户端);
  • 支持信令通道网络传输协议TCP/UDP设置;
  • 支持注册、注销,支持注册刷新及注册有效期设置;
  • 支持设备目录查询应答;
  • 支持心跳机制,支持心跳间隔、心跳检测次数设置;
  • 支持移动设备位置(MobilePosition)订阅和通知;
  •  适用国家标准:GB/T 28181—2016、GB/T28181—2022;
  • 支持语音广播;
  • 支持语音对讲;
  • 支持图像抓拍;
  • 支持历史视音频文件检索;
  • 支持历史视音频文件下载;
  • 支持历史视音频文件回放;
  • 支持云台控制和预置位查询;
  •  [实时水印]支持动态文字水印、png水印;
  •  [镜像]Android平台支持前置摄像头实时镜像功能;
  •  [实时静音]支持实时静音/取消静音;
  •  [实时快照]支持实时快照;
  •  [降噪]支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD检测;
  •  [外部编码前视频数据对接]支持YUV数据对接;
  •  [外部编码前音频数据对接]支持PCM对接;
  •  [外部编码后视频数据对接]支持外部H.264数据对接;
  •  [外部编码后音频数据对接]外部AAC数据对接;
  •  [扩展录像功能]支持和录像SDK组合使用,录像相关功能。

系统要求

  • SDK支持Android 5.1及以上版本;
  • 支持的CPU架构:armv7, arm64, x86, x86_64。

准备工作

  • 确保SmartPublisherJniV2.java放到com.daniulive.smartpublisher包名下(可在其他包名下调用);
  • 如需集成语音广播、语音对讲功能,确保SmartPlayerJniV2.java放到com.daniulive.smartplayer包名下(可在其他包名下调用);
  • smartavengine.jar和smartgbsipagent.jar加入到工程;
  • 拷贝libSmartPublisher.so和libSmartPlayer.so(如需语音广播或语音对讲)到工程;
  • AndroidManifast.xml添加相关权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
  • Load相关so:
static {  
    System.loadLibrary("SmartPublisher");
    System.loadLibrary("SmartPlayer");
}
  • build.gradle配置32/64位库:
splits {
    abi {
        enable true
        reset()
        // Specifies a list of ABIs that Gradle should create APKs for
        include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' //select ABIs to build APKs for
        // Specify that we do not want to also generate a universal APK that includes all ABIs
        universalApk true
    }
}
  • 如需集成到自己系统测试,请用大牛直播SDK的app name,授权版按照授权app name正常使用即可;
  • 如何改app-name,strings.xml做以下修改:
<string name="app_name">SmartPublisherSDKDemo</string>

接口详解

以Android平台Camera2对接为例,信令部分需要实现如下标红接口:

/* 
 * GB28181Camera2Activity.java
 * Created by daniusdk.com
 * WeChat: xinsheng120
 */
public class MainActivity extends Activity implements ViewTreeObserver.OnGlobalLayoutListener, Camera2Listener,
        GBSIPAgentListener, GBSIPAgentPlayListener, GBSIPAgentAudioBroadcastListener,
        GBSIPAgentDeviceControlListener, GBSIPAgentQueryCommandListener, 
        GBSIPAgentTalkListener, 
        GBSIPAgentQueryRecordInfoListener{
}

媒体数据处理接口,可参照SmartPublisherJniV2.java,如需语音广播或语音对讲,可参照SmartPlayerJniV2.java。

信令处理

GBSIPAgentListener主要系GB28181注册、心跳、DevicePosition等,如注册成功、注册超时、注册网络传输层错误、心跳异常、设备位置请求处理:

public interface GBSIPAgentListener
{
    /*注册成功
    * @param dateString: 服务器日期,用来校准设备端时间,用户自行决定是否校准设备时间
    */
    void ntsRegisterOK(String dateString);

    /*
    *注册超时
    */
    void ntsRegisterTimeout();

    /*
    *注册网络传输层异常
    */
    void ntsRegisterTransportError(String errorInfo);

    /*
    *心跳达到异常次数
    */
    void ntsOnHeartBeatException(int exceptionCount, String lastExceptionInfo);

    /*
     * 设备位置请求, 这个主要用在移动设备位置订阅上
     * @param interval 请求间隔, 单位是毫秒
     */
    void ntsOnDevicePositionRequest(String deviceId, int interval);
}

GBSIPAgentPlayListener主要系GB28181的Invite、Ack、Bye等处理:

public interface GBSIPAgentPlayListener {

    /*
     *收到s=Play的实时视音频点播
     */
    void ntsOnInvitePlay(String deviceId, SessionDescription sessionDescription);

    /*
     *发送play invite response 异常
     */
    void ntsOnPlayInviteResponseException(String deviceId, int statusCode, String errorInfo);

    /*
     * 收到CANCEL play INVITE请求
     */
    void ntsOnCancelPlay(String deviceId);

    /*
     * 收到Ack
     */
    void ntsOnAckPlay(String deviceId);

    /*
     * 收到Bye
     */
    void ntsOnByePlay(String deviceId);

    /*
     * 不是在收到BYE Message情况下, 终止Play
     */
    void ntsOnTerminatePlay(String deviceId);

    /*
     * Play会话对应的对话终止, 一般不会出发这个回调,目前只有在响应了200K, 但在64*T1时间后还没收到ACK,才可能会出发
    收到这个, 请做相关清理处理
    */
    void ntsOnPlayDialogTerminated(String deviceId);
}

GBSIPAgentAudioBroadcastListener主要系GB28181语音广播处理相关,如有语音广播相关需求,可参照demo实例实现:

public interface GBSIPAgentAudioBroadcastListener {

    /*
     *收到语音广播通知
     */
    void ntsOnNotifyBroadcastCommand(String fromUserName, String fromUserNameAtDomain, String sn, String sourceID, String targetID);

    /*
     *需要准备接受语音广播的SDP内容
     */
    void ntsOnAudioBroadcast(String commandFromUserName, String commandFromUserNameAtDomain, String sourceID, String targetID);

    /*
     *音频广播, 发送Invite请求异常
     */
    void ntsOnInviteAudioBroadcastException(String sourceID, String targetID, String errorInfo);

    /*
     *音频广播, 等待Invite响应超时
     */
    void ntsOnInviteAudioBroadcastTimeout(String sourceID, String targetID);

    /*
     *音频广播, 收到Invite消息最终响应
     */
    void ntsOnInviteAudioBroadcastResponse(String sourceID, String targetID, int statusCode, SessionDescription sessionDescription);

    /*
     * 音频广播, 收到BYE Message
     */
    void ntsOnByeAudioBroadcast(String sourceID, String targetID);


    /*
     * 不是在收到BYE Message情况下, 终止音频广播
     */
    void ntsOnTerminateAudioBroadcast(String sourceID, String targetID);
}

GBSIPAgentDeviceControlListener主要系GB28181设备控制相关,比如远程启动、云台控制:

public interface GBSIPAgentDeviceControlListener {

    /*
     * 收到远程启动控制命令
     */
    void ntsOnDeviceControlTeleBootCommand(String deviceId, String teleBootValue);

    /*
    * 云台控制
     */
    void ntsOnDeviceControlPTZCmd(String deviceId, String typeValue);
}

GBSIPAgentQueryCommandListener主要系GB28181查询命令,如预置位查询:

public interface GBSIPAgentQueryCommandListener {

    /*
     * 设备预置位查询
     */
    void ntsOnDevicePresetQueryCommand(String fromUserName, String fromUserNameAtDomain, String sn, String deviceId);
}

GBSIPAgentTalkListener主要系GB28181语音对讲相关处理:

public interface GBSIPAgentTalkListener {
    /*
     *收到s=Talk 语音对讲
     */
    void ntsOnInviteTalk(String deviceId, SessionDescription sessionDescription);

    /*
     *发送talk invite response 异常
     */
    void ntsOnTalkInviteResponseException(String deviceId, int statusCode, String errorInfo);

    /*
     * 收到CANCEL Talk INVITE请求
     */
    void ntsOnCancelTalk(String deviceId);

    /*
     * 收到Ack
     */
    void ntsOnAckTalk(String deviceId);

    /*
     * 收到Bye
     */
    void ntsOnByeTalk(String deviceId);

    /*
     * 不是在收到BYE Message情况下, 终止Talk
     */
    void ntsOnTerminateTalk(String deviceId);

    /*
     * Talk会话对应的对话终止, 一般不会出发这个回调,目前只有在响应了200K, 但在64*T1时间后还没收到ACK,才可能会出发
    收到这个, 请做相关清理处理
    */
    void ntsOnTalkDialogTerminated(String deviceId);
}

GBSIPAgentPlaybackListener系历史视音频回放相关:

public interface GBSIPAgentPlaybackListener {
    void ntsOnInvitePlayback(long var1, String var3, SessionDescription var4);

    void ntsOnPlaybackInviteResponseException(long var1, String var3, int var4, String var5);

    void ntsOnCancelPlayback(long var1, String var3);

    void ntsOnAckPlayback(long var1, String var3);

    void ntsOnPlaybackMANSRTSPPlayCommand(long var1, String var3);

    void ntsOnPlaybackMANSRTSPPauseCommand(long var1, String var3);

    void ntsOnPlaybackMANSRTSPScaleCommand(long var1, String var3, double var4);

    void ntsOnPlaybackMANSRTSPSeekCommand(long var1, String var3, double var4);

    void ntsOnPlaybackMANSRTSPTeardownCommand(long var1, String var3);

    void ntsOnByePlayback(long var1, String var3);

    void ntsOnTerminatePlayback(long var1, String var3);

    void ntsOnPlaybackDialogTerminated(long var1, String var3);
}

GBSIPAgentDownloadListen系历史视音频下载相关:

public interface GBSIPAgentDownloadListener {
    void ntsOnInviteDownload(long var1, String var3, SessionDescription var4);

    void ntsOnDownloadInviteResponseException(long var1, String var3, int var4, String var5);

    void ntsOnCancelDownload(long var1, String var3);

    void ntsOnAckDownload(long var1, String var3);

    void ntsOnDownloadMANSRTSPScaleCommand(long var1, String var3, double var4);

    void ntsOnByeDownload(long var1, String var3);

    void ntsOnTerminateDownload(long var1, String var3);

    void ntsOnDownloadDialogTerminated(long var1, String var3);
}

对应GB28181相关接口调用相关设计如下:

/*
 * SmartPublisherJniV2.java
 * Author: https://daniusdk.com
 */
/**
 * 设置GB28181 RTP Sender
 *
 * @param rtp_sender_handle, CreateRTPSender返回值
 * @param rtp_payload_type, 对于GB28181 PS, 协议定义是96, 具体以SDP为准,  RFC 3551有定义
 * @param encoding_name, 编码名, 请参考 RFC 3551, 当前仅支持: "PS", 其他值返回失败
 * @return {0} if successful
 */
public native int SetGB28181RTPSender(long handle, long rtp_sender_handle, int rtp_payload_type, String encoding_name);

/**
 * 设置GB28181 RTP 收到的音频包回调
 * @param handle
 * @param audio_packet_callback
 * @return
 */
public native int SetGB28181ReceiveAudioPacketCallback(long handle, NTAudioPacketCallback audio_packet_callback);

/**
 * 启动 GB28181 媒体流
 *
 * @return {0} if successful
 */
public native int StartGB28181MediaStream(long handle);

/**
 * 停止 GB28181 媒体流
 *
 * @return {0} if successful
 */
public native int StopGB28181MediaStream(long handle);

总结

作为公共安全视频监控联网系统的国家标准,GB28181为不同厂家、不同类型的视频监控设备规定了统一的通信标准和技术规范。这使得各种品牌和型号的设备能够轻松实现互联互通,打破了以往设备之间因通信协议差异而形成的信息壁垒。无论是海康、大华等大型安防企业的设备,还是其他小型厂商的产品,只要符合 GB28181 标准,都可以接入到同一个监控网络中,便于统一管理和调度。遵循开放式架构的原则,具有良好的可扩展性,并且与其他相关标准(如 ONVIF、PSI 等)具有一定的兼容性。这为系统的集成和融合提供了便利,在实际应用中,可以根据需求将不同标准的设备和系统进行整合,提高了系统的灵活性和适应性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型LLM学习路线图2024年最新版!全面掌握学习路径,非常详细,零基础想学大模型收藏这一篇就够了

ChatGPT的出现在全球掀起了AI大模型的浪潮&#xff0c;2023年可以被称为AI元年&#xff0c;AI大模型以一种野蛮的方式&#xff0c;闯入你我的生活之中。 从问答对话到辅助编程&#xff0c;从图画解析到自主创作&#xff0c;AI所展现出来的能力&#xff0c;超出了多数人的预料&…

【redis】redis的多线程和IO多路复用

【redis】redis的多线程和IO多路复用 【一】前言【二】Redis单线程和多线程问题的背景【1】Redis的单线程【2】Redis为什么选择单线程&#xff1f;【3】Redis为什么开始利用多核&#xff1f;【4】Redis当前的性能瓶颈【5】Redis的主线程如何和IO线程协同 【三】IO多路复用的理解…

【Trick】IOS系统解决“未受信任的企业级开发者”问题

问题&#xff1a; 本人通过扫码下载了一个软件&#xff0c;下载完毕后出现以下提示&#xff1a; 解决方法&#xff1a; 这个主要是操作系统的问题&#xff0c;需要在设置里面更改&#xff0c;具体步骤如下&#xff1a; 【1】打开设置&#xff0c;选择【通用】 【2】选择【VP…

千鹿 AI ——AI一键生成模特上身图,零成本制作服装电商图片,AI换模特/背景/批量抠图,一个网站就够了!

前言 在电商行业&#xff0c;卖产品主要是卖图片。拍一套产品图加上美工费用&#xff0c;基本要大几百上千&#xff0c;对新手卖家是不小的支出。服装类目的 SKU 很多&#xff0c;一个链接下有几十个款式很常见。 AI 出现对跨境电商有好处是大家都知道的。现在看看电商领域的…

rust aarch64开发-编译

1. 实验代码下载 本实验基于github或gitee上的开源实现。 // 无法访问github可以通过如下地址下载 git clone https://gitee.com/yang_jun_yi/armv8-rust-hypervisor.git // github下载 git clone https://github.com/Comet959/armv8-rust-hypervisor.git2. 编译 make start…

PG实践|数学函数及其操作(一)

文章目录 引言1.1 ABS() - 取绝对值1.2 CEIL() 或 CEILING() - 向上取整1.3 FLOOR() - 向下取整1.4 ROUND() - 四舍五入1.5 TRUNC() - 截断/截取小数总结 &#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程…

Spring配置/管理bean-IOC(控制反转) 非常详细!基于XML及其注解!案例分析! 建议复习收藏!

目录 1.Spring配置/管理bean介绍 2.基于XML配置bean 2.1基于id来获取bean对象 2.2基于类型获取bean对象 2.3通过指定构造器配置bean对象 2.4通过p名称空间配置bean 2.5通过ref配置bean(实现依赖注入) 2.6注入内部Bean对象&#xff0c;依赖注入另一种方式 2.7 注入集合…

AWD的复现

学习awd的相关资料&#xff1a;速成AWD并获奖的学习方法和思考记录- Track 知识社区 - 掌控安全在线教育 - Powered by 掌控者&#xff08;包含使用脚本去批量修改密码&#xff09; 在复现之前去了解了以下AWD的相关脚本 资料&#xff1a;AWD批量攻击脚本使用教程-CSDN博客 …

网络安全有关法律法规

1. 前言 在当今数字化高速发展的时代&#xff0c;网络安全已成为关乎国家、企业和个人的重要议题。为了应对日益复杂的网络安全挑战&#xff0c;一系列网络安全法律法规应运而生&#xff0c;它们如同坚实的盾牌&#xff0c;守护着我们的数字世界。现在是2024年10月&#xff0c…

军团服务QA角度总结

需求背景&#xff1a; 军团业务诞生的时候承接家族群组功能&#xff0c;玩法邀请成员做任务->积分升级->发送奖励。还是拉收入的一个业务载体。收入才是王道。 军团服务端核心就三个&#xff1a;军团创建&#xff0c;人员管理和军团奖励。 军团创建&#xff1a; 创建…

每天练打字8:今日状况——常用字后五百击键4.5第1遍进行中,赛文速度105.75

今日跟打&#xff1a;738字 总跟打&#xff1a;125701字 记录天数&#xff1a;2459天 &#xff08;实际没有这么多天&#xff0c;这个是注册账号的天数&#xff09; 平均每天&#xff1a;50字 本周目标完成进度&#xff1a; 练习常用单字后500&#xff0c;击键3.5&#xff0c;…

kernel32.dll的功能、作用,教大家几种修复kernel32.dll错误的办法

当这个文件出现问题时&#xff0c;用户可能会遇到各种错误消息&#xff0c;例如“缺失kernel32.dll”或“kernel32.dll发生错误”。这些错误不仅令人困扰&#xff0c;还可能威胁到您的数据安全和系统性能。接下来&#xff0c;本文将教大家几种修复kernel32.dll错误的有效方法&a…

群控系统服务端开发模式-业务流程图补充

进天有读者给我反馈&#xff0c;业务流程图看的不是很明确&#xff0c;所以我把未画完的业务流程图补充完毕。也希望以后更多的读者给我评论及意见。 一、业务流程梳理 1、非业务流程 a、添加部门、添加级别、添加执行方式。因为这些参数都是要被其他地方调用的&#xff0c;更…

word中的内容旋转90度

在vsto、Aspose.Words 中&#xff0c;默认没有直接的 API 可以让表格整体旋转 90 度。然而&#xff0c;我们可以通过一些方式来实现类似的效果&#xff0c;具体思路如下&#xff1a; 将表格插入到一个形状&#xff08;Shape&#xff09;或文本框中&#xff0c;然后旋转该形状。…

影刀RPA实战番外:excel函数应用指南

Excel函数是用于执行特定计算、分析和数据处理任务的预定义公式。它们可处理数学计算、文本处理、逻辑判断、日期和时间运算、查找和引用数据等。例如&#xff0c;SUM函数可以计算一系列数字的总和&#xff0c;IF函数进行逻辑测试&#xff0c;VLOOKUP函数在表格中查找数据&…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中&#xff0c;CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据&#xff0c;例如…

我悟了,华为FreeBuds 6i这样戴更稳了!

谁懂啊&#xff0c;才知道华为FreeBuds 6i标配多种尺寸的耳塞&#xff08;如S、M、L&#xff09;&#xff0c;方便大家根据自己耳道大小自由选择。如果耳机戴上后感到耳朵不适或松动&#xff0c;可能是耳塞尺寸不匹配。 小提示&#xff1a; 耳塞过大 可能会造成压迫感&#xf…

kafka自定义配置信息踩坑

org.apache.kafka.common.config.ConfigException: Invalid value 0 for configuration acks: Expected value to be a string, but it was a java.lang.Integer 场景描述&#xff1a; 单个kafka使用springboot框架自带的 yml 配置完全OK&#xff08;因为底层会帮我们处理好类…

CSS 设置网页的背景图片

背景 最近正好在写一个个人博客网站“小石潭记”&#xff0c;需要一张有水&#xff0c;有鱼的图片。正好玩原神遇到了类似场景&#xff0c;于是截图保存&#xff0c;添加到网站里面。以下是效果图&#xff1a; css 写个class&#xff0c;加到整个网页的body上 .bodyBg {ba…

接口测试 —— 如何测试加密接口?

接口加密是指在网络传输过程中&#xff0c;将数据进行加密&#xff0c;以保护数据的安全性。接口加密可以采用多种加密算法&#xff0c;如AES、DES、RSA等。测试接口加密的目的是验证接口加密算法的正确性和安全性。以下是一些详细的测试方法和注意事项&#xff1a; 接口加密字…