GB28181执法记录仪功能设计与技术实现

GB28181执法记录仪功能设计

在当今的安防监控与视频通信领域,GB28181协议已成为实现设备互联互通的关键标准。执法记录仪作为重要的安防设备,其GB28181接入能力对于提升执法效率和实现统一指挥调度具有重要意义。本文将深入探讨基于大牛直播SDK的Android平台GB28181设备接入模块(SmartGBD)在执法记录仪中的技术实现与应用。

GB28181协议全称为《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由中国公安部科技信息化局提出的一项国家标准。该协议旨在规范安全防范视频监控联网系统中信息传输、交换、控制的互联结构、通信协议结构,以及传输、交换、控制的基本要求和安全性要求。GB/T28181-2016和GB/T28181-2022规范的推出,进一步细化和完善了视频监控设备之间的通信协议规范,使得不同厂商的设备能够更好地在同一平台上协同工作。

一、基本功能

  1. 设备注册与身份认证

    • 能够向监控中心注册设备信息,包括设备 ID、设备类型、设备名称等。

    • 支持基于用户名和密码的身份认证机制,确保只有合法的设备能够接入监控系统。

  2. 实时视频传输

    • 支持将实时视频流传输到监控中心,常用的视频编码格式有 H.264 和 H.265。

    • 能够根据网络状况自动调整视频质量和帧率,保证视频传输的流畅性。

  3. 实时音频传输

    • 可以将现场的音频信息实时传输给监控中心,支持双工通信,使指挥人员可以与现场人员进行实时对话。

    • 支持音频降噪和回声消除功能,保证音频质量。

  4. 设备控制

    • 能够响应监控中心的控制指令,如启动录像、抓拍图片、开启声音警告灯等。

    • 支持云台控制功能,可远程调整摄像头的角度和方向。

  5. 设备状态查询

    • 可以实时向监控中心报告设备的状态,如电池电量、存储空间、网络连接状态等。

二、GB28181 特定功能

  1. 设备注册与注销

    • 支持自动注册到监控中心,并在设备关机或网络连接中断时自动注销。

    • 支持手动注册和注销功能,方便设备在不同监控中心之间的切换。

  2. 心跳机制

    • 定期向监控中心发送心跳包,以保持与监控中心的连接,通常心跳周期为 60 秒。

  3. 设备巡检

    • 能够响应监控中心的巡检请求,返回设备的当前状态和信息。

  4. 设备配置

    • 支持从监控中心获取设备配置参数,如视频分辨率、帧率、码率等,并根据配置参数进行调整。

  5. 报警功能

    • 支持多种报警触发方式,如移动侦测、声音报警检测等,并在报警时向监控中心发送报警信息。

    • 能够接收监控中心的报警指令,如开始录像、抓拍图片等。

三、执法记录仪特定功能

  1. 高清视频录制

    • 支持高清视频录制,常见的分辨率有 1080p、720p 等,能够清晰记录执法现场的细节。

  2. 夜视功能

    • 配备红外夜视功能或低照度模式,能够在夜间或光线较暗的环境下清晰拍摄。

  3. 紧急录像功能

    • 能够在紧急情况下(如按下紧急按钮或检测到异常事件)自动启动录像,并以高优先级保存录像文件。

  4. 图片抓拍

    • 支持手动抓拍和自动抓拍功能,可以将特定时刻的现场画面以图片的形式保存下来。

  5. 地理位置信息记录

    • 集成 GPS 模块,能够实时记录设备的地理位置信息,并在录像和图片中嵌入地理位置水印。

  6. 电池续航

    • 配备大容量电池,保证在执法过程中有足够的续航时间。同时,具有电池电量监测功能,并在电量低时发出警报。

  7. 数据加密与安全

    • 对存储和传输的数据进行加密,防止数据被非法篡改或泄漏。

    • 具有防拆卸和防恶意操作的机制,确保设备的安全性。

  8. 存储和回放

    • 配备大容量存储卡,能够存储大量的视频和图片数据。

    • 支持本地回放和远程回放功能,方便用户在事后查看和分析执法过程。

  9. 日志管理

    • 记录设备的操作日志和报警记录,包括设备的开关机时间、录像开始和结束时间、报警触发时间等。

    • 能够将日志信息上传到监控中心,便于进行设备管理和故障排查。

  10. 语音提示和通知

    • 具有语音提示功能,能够在设备启动、录像开始和结束、电池电量低等情况下发出语音提示。

    • 能够接收监控中心的语音通知,如调度指令等。

技术实现

SmartGBD是一款专为Android平台设计的GB28181接入SDK,它能够使不具备国标音视频能力的Android终端通过平台注册接入到现有的GB/T28181—2016或GB/T28181—2022服务。这一SDK的推出,极大地拓展了Android设备在视频监控、智慧物联等领域的应用场景,如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公等。

一、SmartGBD的技术特点与优势

  • 全自研框架与自适应算法:SmartGBD采用全自研框架,具有易于扩展的特点。其自适应算法能够有效降低延迟,提高采集、编码和传输的效率。

  • 多功能支持:SmartGBD以SDK接口形式提供所有功能,并支持状态反馈。支持同时运行RTMP直播推送SDK、轻量级RTSP服务SDK和录像SDK。

  • 外部数据源接入:支持外部YUV/RGB/H.264/H.265/AAC数据源接入,可以通过拉取RTSP或RTMP流的方式,将其他IPC的RTSP流接入到国标平台。

二、执法记录仪的GB28181接入实现

  1. 硬件选型:选择符合GB28181标准的执法记录仪设备,确保设备具备高清晰度摄像和音频采集能力,支持4G/5G或Wi-Fi等无线网络连接,并配备北斗/GPS等定位模块。

  2. 设备注册:执法记录仪通过网络接入到GB28181视频监控系统中,通过设备的唯一标识和密码完成注册和鉴权。

  3. 信令处理:根据GB28181协议要求,实现信令的编解码、交换与处理功能。例如,处理注册、心跳、设备位置请求等信令。

  4. 媒体传输:配置音视频数据的传输,确保数据的稳定性和实时性。可以通过拉取RTSP或RTMP流的方式,将视频数据接入到GB28181平台。

三、功能扩展与应用

  • 移动设备位置订阅和通知:执法记录仪可以实时上报巡检人员的位置信息,实现对执法人员的精准定位和轨迹跟踪。

  • 图像抓拍:支持远程控制执法记录仪进行图像抓拍,为抓取关键证据提供支持。

  • 语音广播和语音对讲:实现指挥中心与执法人员之间的双向语音通信,提升指挥调度的效率。

  • 历史视音频下载和回放:支持对执法记录仪存储的历史视音频数据进行下载和回放,便于事后审查和证据追溯。

四、功能特性

大牛直播SDK的SmartGBD,Android终端除支持常规的音视频数据接入外,还可以支持移动设备位置(MobilePosition)订阅和通知、语音广播和语音对讲、云台控制回调和预置位查询,支持对接数据类型如下:

  • 编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型);
  • 编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据);
  • 拉取RTSP或RTMP流并接入至GB28181平台。

(一)音视频格式

  • 视频格式 :支持 H.264/H.265(Android H.265 硬编码)。

  • 音频格式 :支持 G.711 A 律、AAC。

(二)音视频处理

  • 音量调节 :Android 平台采集端支持实时音量调节。

  • H.264 硬编码 :支持特定机型的 H.264 硬编码。

  • H.265 硬编码 :支持特定机型的 H.265 硬编码。

  • 软硬编码参数配置 :支持 GOP 间隔、帧率、码率设置;支持软编码 profile、软编码速度、可变码率设置。

  • 传输模式 :支持纯视频、音视频 PS 打包传输。

  • 网络传输协议 :支持 RTP OVER UDP 和 RTP OVER TCP 被动模式;支持信令通道网络传输协议 TCP/UDP 设置。

(三)信令与控制

  • 注册与注销 :支持注册、注销,支持注册刷新及注册有效期设置。

  • 设备目录查询 :支持设备目录查询应答。

  • 心跳机制 :支持心跳机制,支持心跳间隔、心跳检测次数设置。

  • 移动设备位置 :支持移动设备位置(MobilePosition)订阅和通知。

  • 云台控制 :支持云台控制和预置位查询。

(四)其他功能

  • 语音广播 :支持语音广播。

  • 语音对讲 :支持语音对讲。

  • 图像抓拍 :支持图像抓拍。

  • 历史视音频文件 :支持历史视音频文件检索、下载及回放。

  • 实时水印 :支持动态文字水印、png 水印。

  • 镜像功能 :Android 平台支持前置摄像头实时镜像功能。

  • 实时静音 :支持实时静音 / 取消静音。

  • 实时快照 :支持实时快照。

  • 降噪处理 :支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD 检测。

  • 外部编码数据对接 :支持 YUV 数据、PCM 数据、外部 H.264 数据、外部 AAC 数据对接。

  • 扩展录像功能 :支持和录像 SDK 组合使用,实现录像相关功能。

五、接口详解

(一)信令处理

1. GBSIPAgentListener

该接口主要涉及 GB28181 注册、心跳、设备位置请求等处理,包括以下方法:

方法名描述
ntsRegisterOK(String dateString)注册成功回调,返回注册成功的日期字符串
ntsRegisterTimeout()注册超时回调
ntsRegisterTransportError(String errorInfo)注册网络传输层错误回调,返回错误信息
ntsOnHeartBeatException(int exceptionCount, String lastExceptionInfo)心跳异常回调,返回异常次数和最后一次异常信息
ntsOnDevicePositionRequest(String deviceId, int interval)设备位置请求处理回调,返回设备 ID 和请求间隔
2. GBSIPAgentPlayListener

该接口主要涉及 GB28181 的 Invite、Ack、Bye 等处理,包括以下方法:

方法名描述
ntsOnInvitePlay(String deviceId, SessionDescription sessionDescription)收到 Invite 请求回调,返回设备 ID 和会话描述信息
ntsOnPlayInviteResponseException(String deviceId, int statusCode, String errorInfo)Invite 响应异常回调,返回设备 ID、状态码和错误信息
ntsOnCancelPlay(String deviceId)取消播放回调,返回设备 ID
ntsOnAckPlay(String deviceId)Ack 确认回调,返回设备 ID
ntsOnByePlay(String deviceId)Bye 请求回调,返回设备 ID
ntsOnTerminatePlay(String deviceId)终止播放回调,返回设备 ID
ntsOnPlayDialogTerminated(String deviceId)播放对话终止回调,返回设备 ID
3. GBSIPAgentAudioBroadcastListener

该接口主要涉及 GB28181 语音广播处理相关,包括以下方法:

方法名描述
ntsOnNotifyBroadcastCommand(String fromUserName, String fromUserNameAtDomain, String sn, String sourceID, String targetID)通知广播命令回调,返回发送方用户名、发送方域名、序列号、源 ID 和目标 ID
ntsOnAudioBroadcast(String commandFromUserName, String commandFromUserNameAtDomain, String sourceID, String targetID)语音广播回调,返回命令发送方用户名、命令发送方域名、源 ID 和目标 ID
ntsOnInviteAudioBroadcastException(String sourceID, String targetID, String errorInfo)Invite 语音广播异常回调,返回源 ID、目标 ID 和错误信息
ntsOnInviteAudioBroadcastTimeout(String sourceID, String targetID)Invite 语音广播超时回调,返回源 ID 和目标 ID
ntsOnInviteAudioBroadcastResponse(String sourceID, String targetID, int statusCode, SessionDescription sessionDescription)Invite 语音广播响应回调,返回源 ID、目标 ID、状态码和会话描述信息
ntsOnByeAudioBroadcast(String sourceID, String targetID)Bye 语音广播回调,返回源 ID 和目标 ID
ntsOnTerminateAudioBroadcast(String sourceID, String targetID)终止语音广播回调,返回源 ID 和目标 ID
4. GBSIPAgentDeviceControlListener

该接口主要涉及 GB28181 设备控制相关,如远程启动、云台控制等,包括以下方法:

方法名描述
ntsOnDeviceControlTeleBootCommand(String deviceId, String teleBootValue)设备远程启动命令回调,返回设备 ID 和远程启动值
ntsOnDeviceControlPTZCmd(String deviceId, String typeValue)云台控制命令回调,返回设备 ID 和类型值
5. GBSIPAgentQueryCommandListener

该接口主要涉及 GB28181 查询命令,如预置位查询等,包括以下方法:

方法名描述
ntsOnDevicePresetQueryCommand(String fromUserName, String fromUserNameAtDomain, String sn, String deviceId)设备预置位查询命令回调,返回发送方用户名、发送方域名、序列号和设备 ID
6. GBSIPAgentTalkListener

该接口主要涉及 GB28181 语音对讲相关处理,包括以下方法:

方法名描述
ntsOnInviteTalk(String deviceId, SessionDescription sessionDescription)收到 Invite 对讲请求回调,返回设备 ID 和会话描述信息
ntsOnTalkInviteResponseException(String deviceId, int statusCode, String errorInfo)Invite 对讲响应异常回调,返回设备 ID、状态码和错误信息
ntsOnCancelTalk(String deviceId)取消对讲回调,返回设备 ID
ntsOnAckTalk(String deviceId)Ack 确认回调,返回设备 ID
ntsOnByeTalk(String deviceId)Bye 请求回调,返回设备 ID
ntsOnTerminateTalk(String deviceId)终止对讲回调,返回设备 ID
ntsOnTalkDialogTerminated(String deviceId)对讲对话终止回调,返回设备 ID
7. GBSIPAgentPlaybackListener

该接口主要涉及历史视音频回放相关,包括以下方法:

方法名描述
ntsOnInvitePlayback(long var1, String var3, SessionDescription var4)收到 Invite 回放请求回调,返回相关参数
ntsOnPlaybackInviteResponseException(long var1, String var3, int var4, String var5)Invite 回放响应异常回调,返回相关参数
ntsOnCancelPlayback(long var1, String var3)取消回放回调,返回相关参数
ntsOnAckPlayback(long var1, String var3)Ack 确认回调,返回相关参数
ntsOnPlaybackMANSRTSPPlayCommand(long var1, String var3)回放 RTSP 播放命令回调,返回相关参数
ntsOnPlaybackMANSRTSPPauseCommand(long var1, String var3)回放 RTSP 暂停命令回调,返回相关参数
ntsOnPlaybackMANSRTSPScaleCommand(long var1, String var3, double var4)回放 RTSP 缩放命令回调,返回相关参数
ntsOnPlaybackMANSRTSPSeekCommand(long var1, String var3, double var4)回放 RTSP 定位命令回调,返回相关参数
ntsOnPlaybackMANSRTSPTeardownCommand(long var1, String var3)回放 RTSP 拆卸命令回调,返回相关参数
ntsOnByePlayback(long var1, String var3)Bye 请求回调,返回相关参数
ntsOnTerminatePlayback(long var1, String var3)终止回放回调,返回相关参数
ntsOnPlaybackDialogTerminated(long var1, String var3)回放对话终止回调,返回相关参数
8. GBSIPAgentDownloadListener

该接口主要涉及历史视音频下载相关,包括以下方法:

方法名描述
ntsOnInviteDownload(long var1, String var3, SessionDescription var4)收到 Invite 下载请求回调,返回相关参数
ntsOnDownloadInviteResponseException(long var1, String var3, int var4, String var5)Invite 下载响应异常回调,返回相关参数
ntsOnCancelDownload(long var1, String var3)取消下载回调,返回相关参数
ntsOnAckDownload(long var1, String var3)Ack 确认回调,返回相关参数
ntsOnDownloadMANSRTSPScaleCommand(long var1, String var3, double var4)下载 RTSP 缩放命令回调,返回相关参数
ntsOnByeDownload(long var1, String var3)Bye 请求回调,返回相关参数
ntsOnTerminateDownload(long var1, String var3)终止下载回调,返回相关参数
ntsOnDownloadDialogTerminated(long var1, String var3)下载对话终止回调,返回相关参数

(二)媒体数据处理

1. RTP 数据发送

RTP Sender(SmartPublisherJniV2.java)相关接口设计如下:

方法名描述
public native long CreateRTPSender(int reserve)创建 RTP 发送器,返回发送器句柄
public native int SetRTPSenderTransportProtocol(long rtp_sender_handle, int transport_protocol)设置 RTP 发送器传输协议,参数为发送器句柄和传输协议类型
public native int SetRTPSenderIPAddressType(long rtp_sender_handle, int ip_address_type)设置 RTP 发送器 IP 地址类型,参数为发送器句柄和 IP 地址类型
public native int SetRTPSenderLocalPort(long rtp_sender_handle, int port)设置 RTP 发送器本地端口,参数为发送器句柄和端口号
public native int SetRTPSenderSSRC(long rtp_sender_handle, String ssrc)设置 RTP 发送器 SSRC,参数为发送器句柄和 SSRC 值
public native int SetRTPSenderSocketSendBuffer(long rtp_sender_handle, int buffer_size)设置 RTP 发送器套接字发送缓冲区大小,参数为发送器句柄和缓冲区大小
public native int SetRTPSenderClockRate(long rtp_sender_handle, int clock_rate)设置 RTP 发送器时钟速率,参数为发送器句柄和时钟速率
public native int SetRTPSenderDestination(long rtp_sender_handle, String address, int port)设置 RTP 发送器目标地址和端口,参数为发送器句柄、地址和端口
public native int EnableRTPSenderReceive(long rtp_sender_handle, int is_enable)启用或禁用 RTP 发送器接收功能,参数为发送器句柄和是否启用标志
public native int SetRTPSenderReceiveSSRC(long rtp_sender_handle, String ssrc)设置 RTP 发送器接收 SSRC,参数为发送器句柄和 SSRC 值
public native int SetRTPSenderReceivePayloadType(long rtp_sender_handle, int payload_type, String encoding_name, int media_type, int clock_rate)设置 RTP 发送器接收负载类型,参数为发送器句柄、负载类型、编码名称、媒体类型和时钟速率
public native int SetRTPSenderReceivePSClockFrequency(long rtp_sender_handle, int ps_clock_frequency)设置 RTP 发送器接收 PS 时钟频率,参数为发送器句柄和 PS 时钟频率
public native int SetRTPSenderReceiveAudioSamplingRate(long rtp_sender_handle, int sampling_rate)设置 RTP 发送器接收音频采样率,参数为发送器句柄和采样率
public native int SetRTPSenderReceiveAudioChannels(long rtp_sender_handle, int channels)设置 RTP 发送器接收音频声道数,参数为发送器句柄和声道数
public native int InitRTPSender(long rtp_sender_handle)初始化 RTP 发送器,参数为发送器句柄
public native int GetRTPSenderLocalPort(long rtp_sender_handle)获取 RTP 发送器本地端口,参数为发送器句柄
public native int UnInitRTPSender(long rtp_sender_handle)反初始化 RTP 发送器,参数为发送器句柄
public native int DestoryRTPSender(long rtp_sender_handle)销毁 RTP 发送器,参数为发送器句柄
2. RTP 数据接收

对应 RTP Receiver(SmartPlayerJniV2.java)相关接口设计如下(如无语音广播或语音对讲相关技术需求,这部分可忽略):

方法名描述
public native long CreateRTPReceiver(int reserve)创建 RTP 接收器,返回接收器句柄
public native int SetRTPReceiverTransportProtocol(long rtp_receiver_handle, int transport_protocol)设置 RTP 接收器传输协议,参数为接收器句柄和传输协议类型
public native int SetRTPReceiverIPAddressType(long rtp_receiver_handle, int ip_address_type)设置 RTP 接收器 IP 地址类型,参数为接收器句柄和 IP 地址类型
public native int SetRTPReceiverLocalPort(long rtp_receiver_handle, int port)设置 RTP 接收器本地端口,参数为接收器句柄和端口号
public native int SetRTPReceiverSSRC(long rtp_receiver_handle, String ssrc)设置 RTP 接收器 SSRC,参数为接收器句柄和 SSRC 值
public native int CreateRTPReceiverSession(long rtp_receiver_handle, int reserve)创建 RTP 接收器会话,参数为接收器句柄和保留参数
public native int GetRTPReceiverLocalPort(long rtp_receiver_handle)获取 RTP 接收器本地端口,参数为接收器句柄
public native int SetRTPReceiverPayloadType(long rtp_receiver_handle, int payload_type, String encoding_name, int media_type, int clock_rate)设置 RTP 接收器负载类型,参数为接收器句柄、负载类型、编码名称、媒体类型和时钟速率
public native int SetRTPReceiverAudioSamplingRate(long rtp_receiver_handle, int sampling_rate)设置 RTP 接收器音频采样率,参数为接收器句柄和采样率
public native int SetRTPReceiverAudioChannels(long rtp_receiver_handle, int channels)设置 RTP 接收器音频声道数,参数为接收器句柄和声道数
public native int SetRTPReceiverRemoteAddress(long rtp_receiver_handle, String address, int port)设置 RTP 接收器远程地址和端口,参数为接收器句柄、地址和端口
public native int InitRTPReceiver(long rtp_receiver_handle)初始化 RTP 接收器,参数为接收器句柄
public native int UnInitRTPReceiver(long rtp_receiver_handle)反初始化 RTP 接收器,参数为接收器句柄
public native int DestoryRTPReceiverSession(long rtp_receiver_handle)销毁 RTP 接收器会话,参数为接收器句柄
public native int DestoryRTPReceiver(long rtp_receiver_handle)销毁 RTP 接收器,参数为接收器句柄
3. PostAudioPacket

PostAudioPacketSmartPlayerJniV2.java)用于投递音频包给外部 Live source,目前仅于语音对讲使用,接口定义如下:

public native int PostAudioPacket(long handle, int codec_id,
                          java.nio.ByteBuffer packet, int offset, int size, long pts, boolean is_pts_discontinuity,
                          java.nio.ByteBuffer extra_data, int extra_data_offset, int extra_data_size, int sample_rate, int channels);

(三)GB28181 接口调用

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

public native int SetGB28181RTPSender(long handle, long rtp_sender_handle, int rtp_payload_type, String encoding_name);
public native int SetGB28181ReceiveAudioPacketCallback(long handle, NTAudioPacketCallback audio_packet_callback);
public native int StartGB28181MediaStream(long handle);
public native int StopGB28181MediaStream(long handle);

总结

基于大牛直播SDK的Android平台GB28181设备接入模块(SmartGBD)为执法记录仪的GB28181接入提供了高效、可靠的解决方案。通过SmartGBD,执法记录仪能够实现与GB28181平台的无缝对接,具备丰富的功能和良好的性能表现。未来,随着GB28181协议的进一步推广和应用,SmartGBD将在更多的领域和场景中发挥重要作用,为视频监控和智慧物联的发展提供有力支持。以上是基于GB28181执法记录仪基础功能设计和技术实现,感兴趣的开发者,可以单独跟我沟通探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值