SmartMediaKit Android GB28181 设备接入技术解析:实时回传、语音广播与录像回放/下载

📅 2026/7/22 6:01:00
SmartMediaKit Android GB28181 设备接入技术解析:实时回传、语音广播与录像回放/下载
前言在智慧安防、移动执法、车载终端、无人机巡检、智慧工地、工业巡检等场景中越来越多 Android 终端需要接入既有 GB/T 28181 视频平台。传统 GB28181 前端设备通常是 IPC、NVR、执法记录仪等专用硬件而 Android 手机、平板、智能安全帽、车载屏、机器人控制终端等设备本身并不一定具备完整的国标信令、PS 封装、RTP 传输、录像回放、语音广播等能力。大牛直播SDKSmartMediaKit的 Android 平台 GB28181 设备接入模块 SmartGBD正是为这类业务设计的。它可以让 Android 终端以“国标前端设备”的形态注册到 GB28181 平台实现实时音视频上报、平台点播、语音广播、移动位置上报、云台控制回调、历史视音频查询、回放和下载等能力。本文结合 SmartMediaKit 官方能力说明以及 Android Demo 工程中的核心代码分析 SmartGBD 在 GB28181 设备接入场景下的业务价值和技术优势。一、Android 终端接入 GB28181 的典型业务场景1. 移动执法和应急指挥执法记录仪、警务通、移动布控球、应急单兵设备等需要将现场音视频实时回传到指挥中心。平台侧通常已经建设了 GB28181 视频平台如果 Android 终端可以直接以国标设备注册进去就能减少协议网关和私有协议适配成本。2. 车载和生产运输公交、物流、危化品运输、工程车辆等场景中Android 车载终端既要采集摄像头画面也要上报位置还可能需要平台主动点播、录像调阅和语音调度。GB28181 的设备目录、实时点播、历史回放、MobilePosition 等能力非常契合这类场景。3. 智慧工地和工业巡检智能安全帽、巡检机器人、手持巡检终端等设备往往工作在复杂网络环境下。终端需要低功耗、低延迟、可控码率、弱网恢复和稳定的媒体传输能力。SmartGBD 把国标信令和音视频媒体链路封装到 SDK 中能让业务侧更专注于设备逻辑。4. 无人机和机器人无人机、巡检机器人常见的数据源并不一定是 Android Camera 原始数据也可能是外部编码后的 H.264/H.265 数据或者是 RTSP/RTMP 输入流。SmartMediaKit 支持编码前和编码后数据对接这对无人机图传、机器人巡检和边缘设备接入非常关键。二、SmartGBD 的定位让 Android 终端变成 GB28181 前端设备从架构上看SmartGBD 不是单纯的播放器或推流器而是一个“国标设备接入模块”。它需要同时处理两条链路SIP 信令链路负责注册、注销、心跳、设备目录、INVITE、BYE、ACK、查询、控制等 GB28181 信令。RTP 媒体链路负责将 Android 端采集或输入的音视频数据按 GB28181 要求封装为 PS/RTP再通过 UDP 或 TCP 发送到平台。在 Demo 中MainActivity同时实现了多个 GB28181 相关监听接口例如注册状态、实时点播、语音广播、设备控制、设备配置、录像查询等。应用启动 GB28181 后会创建 SIP Agent设置本地地址、服务端信息、账号信息、传输协议并注册设备通道。核心流程可以概括为gb28181_agent_.addListener(this); gb28181_agent_.addPlayListener(this); gb28181_agent_.addAudioBroadcastListener(this); gb28181_agent_.addDeviceControlListener(this); gb28181_agent_.setDeviceConfigListener(this); gb28181_agent_.addQueryCommandListener(this); gb28181_agent_.addQueryRecordInfoListener(this);这说明 Demo 并不只是“能推一路视频”而是围绕国标设备的完整生命周期做了接入注册、心跳、点播、语音、控制、录像查询、历史回放和下载。三、实时点播平台 INVITE 后按需启动媒体流GB28181 设备接入的一个重要特点是“平台点播”。终端不是一直推流而是在平台发起 INVITE 后再创建 RTP Sender协商媒体参数并启动音视频上报。Demo 中实时点播的大致逻辑是long rtp_sender_handle libPublisher.CreateRTPSender(0); libPublisher.SetRTPSenderTransportProtocol( rtp_sender_handle, video_des.isRTPOverUDP() ? 0 : 1 ); libPublisher.SetRTPSenderIPAddressType( rtp_sender_handle, video_des.isIPv4() ? 0 : 1 ); libPublisher.SetRTPSenderLocalPort(rtp_sender_handle, 0); libPublisher.SetRTPSenderSSRC(rtp_sender_handle, video_des.getSSRC()); libPublisher.SetRTPSenderClockRate(rtp_sender_handle, ps_rtpmap_attr.getClockRate()); libPublisher.SetRTPSenderDestination( rtp_sender_handle, video_des.getAddress(), video_des.getPort() );这里可以看到几个关键点RTP Sender 是按会话创建的TCP/UDP 传输方式来自平台下发 SDP支持 IPv4/IPv6 地址类型SSRC、PayloadType、ClockRate 等参数按 SDP 协商媒体目的地址和端口由平台 INVITE 指定。随后Demo 会把 RTP Sender 绑定到 GB28181 媒体流stream_publisher_.SetGB28181RTPSender( gb28181_rtp_sender_handle_, gb28181_rtp_payload_type_, gb28181_rtp_encoding_name_ ); stream_publisher_.StartGB28181MediaStream();这体现了 SmartMediaKit 的一个重要优势GB28181 信令和底层媒体发送解耦。业务层负责响应平台事件SDK 负责媒体编码、封装和发送。四、历史视音频查询、回放、下载都在 Demo 中有完整体现很多 GB28181 接入方案只覆盖实时点播但行业项目里“历史视音频”同样重要。比如执法取证、事件回溯、事故分析、教学录制回看等都依赖历史录像查询、回放和下载。Demo 工程中有三块相关实现录像文件生成本地录像通过 SmartPublisher 录制模块完成可以设置录像目录、文件大小等。录像查询平台发起 RecordInfo 查询后Demo 会扫描本地录像目录按时间范围匹配录像文件并通过 GB28181 信令返回录像列表。历史回放和下载PlaybackListenerImpl处理历史回放 INVITERecordDownloadListenerImpl处理历史下载 INVITE。二者都会查询本地录像文件创建 RTP Sender并将文件数据按 PS/RTP 发送给平台。历史回放中代码会根据平台 SDP 设置 RTP 发送参数lib_publisher.SetRTPSenderTransportProtocol( rtp_handle, req_media_desc.isRTPOverUDP() ? 0 : 1 );然后生成本端 SDP 响应local_media_desc.setTransportProtocol( req_media_desc.getTransportProtocol() );这意味着历史回放和下载的 RTP TCP/UDP 传输方式不是配置页里的 SIP 传输协议决定的而是由平台下发的媒体 SDP 决定。平台给RTP/AVP设备端走 UDP平台给TCP/RTP/AVP设备端走 TCP。这一点在实际对接中很重要SIP 走 TCP/UDP 和媒体 RTP 走 TCP/UDP 是两个概念不能混在一起。五、语音广播、语音对讲和设备控制国标设备接入不只是“上传视频”。在指挥调度场景里平台还经常需要向终端发起语音广播或语音对讲。Demo 中也包含了语音广播相关回调和播放处理逻辑。例如平台发起语音广播通知后终端可以通过 SIP Agent 发起广播 INVITE并在媒体响应中创建 RTP Receiver接收平台下发的音频数据再交给播放器或音频输出模块播放。此外Demo 还处理了云台控制和预置位查询public void ntsOnDeviceControlPTZCmd(String deviceId, String typeValue)public void ntsOnDevicePresetQueryCommand(...)对于 Android 终端来说“云台控制”不一定对应传统 PTZ 摄像机也可以映射到业务动作例如控制变焦、切换摄像头、调整云台底座、控制机器人方向等。SDK 提供回调后具体动作可以由业务层灵活实现。六、移动位置上报适合车载、单兵和巡检设备SmartGBD 支持 MobilePosition 订阅和通知。Demo 中在创建设备对象时如果有经纬度信息会设置设备位置并声明支持移动位置上报com.gb.ntsignalling.DevicePosition device_pos new com.gb.ntsignalling.DevicePosition(); device_pos.setTime(mLocationTime); device_pos.setLongitude(mLongitude); device_pos.setLatitude(mLatitude); gb_device.setPosition(device_pos); gb_device.setSupportMobilePosition(true);当平台订阅位置后终端可以按指定间隔上报最新位置。这对移动执法、车载监管、巡检轨迹、无人机巡航等场景很实用。七、SmartMediaKit 在 GB28181 接入上的技术优势1. SDK 化集成降低国标接入门槛GB28181 涉及 SIP、SDP、RTP、PS 封装、设备目录、心跳、点播、回放、下载、语音广播等多个模块。如果完全自研周期长、坑多、兼容性成本高。SmartGBD 将这些底层能力封装为 SDK 和回调接口业务侧只需要关注设备信息、音视频数据源和具体业务动作。2. 同时支持编码前和编码后数据在 Android 项目中数据源差异很大Camera2 原始数据屏幕采集数据外部模块输出的 H.264/H.265本地 MP4 文件解析数据无人机或其他硬件传来的编码流RTSP/RTMP 拉流后的媒体数据。SmartMediaKit 支持编码前数据也支持编码后音视频数据投递这让它更适合行业终端和非标准硬件场景。3. 实时点播按需编码节省终端资源GB28181 设备常见工作模式是平时只注册和心跳平台点播时才启动媒体链路。Android 终端对电量、CPU、温度和后台运行都有要求按需启动媒体流可以减少无效编码和网络传输。Demo 中也是在收到 INVITE 后才创建 RTP Sender 并启动 GB28181 媒体流这种设计更贴近真实项目。4. RTP TCP/UDP 协商清晰GB28181 项目里网络环境经常复杂局域网、专网、跨网段、NAT、弱网、移动网络都可能存在。SmartGBD 的 RTP Sender 支持按 SDP 协商 UDP 或 TCP并且 Demo 中对实时点播、历史回放、历史下载都做了对应处理。对于 GB/T 28181-2022 场景SDK 还预留了 TCP 重连相关接口例如 TCP 连接超时、首次重连间隔、最大重连次数等方便适配更严格的平台要求。5. 历史录像能力完整Demo 中不仅支持本地录像还支持录像文件查询按时间范围匹配历史回放历史下载回放暂停、播放、倍速、拖动、停止下载速度控制。这对执法取证、监控留存、事故复盘类项目很关键。6. 能和 SmartMediaKit 其他模块组合SmartMediaKit 不只是 GB28181 模块还覆盖推流、播放、录像、RTSP 服务、RTSP 网关、多路转发等能力。一个 Android 终端既可以作为 GB28181 前端设备接入平台也可以同时对外提供 RTSP 服务或者把外部 RTSP/RTMP 流接入到国标平台。这种模块化组合能力在边缘网关、机器人、车载终端和行业一体机上非常实用。八、实际项目集成建议先确认平台标准版本明确对接的是 GB/T 28181-2016 还是 GB/T 28181-2022尤其关注 TCP 媒体传输、SSRC、目录、录像查询和语音广播兼容性。区分 SIP 传输和 RTP 传输配置页中的 SIP TCP/UDP 只影响信令实时点播、历史回放、历史下载的媒体 TCP/UDP 通常由 SDP 中的RTP/AVP或TCP/RTP/AVP决定。录像文件命名和时间戳要规范历史查询和回放依赖准确的开始时间、结束时间、文件时长和文件大小。项目中应统一录像文件命名规则避免平台查询不到录像。移动端注意资源控制建议按需启动采集、编码和媒体发送平台不点播时只维持注册和心跳降低功耗和发热。对弱网场景做充分测试车载、单兵、无人机等场景下网络波动频繁需要重点测试重注册、心跳异常、TCP 重连、BYE/CANCEL、平台反复点播等情况。九、总结SmartMediaKit 的 Android GB28181 设备接入模块 SmartGBD适合需要把 Android 终端快速纳入现有国标视频平台的行业项目。它覆盖了从 SIP 注册、心跳、平台点播到 PS/RTP 媒体发送、语音广播、位置上报、设备控制、历史录像查询、回放和下载等完整链路。结合 Demo 工程可以看到SmartGBD 的设计并不是简单封装一个推流接口而是围绕 GB28181 前端设备的真实业务模型来组织平台发起 INVITE终端按需创建 RTP Sender平台查询录像终端扫描本地文件并响应平台发起历史回放或下载终端按 SDP 协商 TCP/UDP 并发送录像数据。对于移动执法、车载监管、智慧工地、工业巡检、无人机和机器人等业务来说这种 SDK 化、模块化、低延迟、可组合的能力可以显著降低 Android 终端接入 GB28181 平台的技术复杂度加快项目落地。 CSDN官方博客音视频牛哥-CSDN博客