深度解析SmartGBD助力Android音视频数据接入GB28181平台
在当今数字化时代,视频监控与音视频通信技术在各行各业的应用愈发广泛。GB28181协议作为中国国家标准,为视频监控设备的互联互通提供了规范,但在实际应用中,许多Android终端设备并不具备国标音视频能力,这限制了其在相关领域的应用。大牛直播SDK推出的Android平台GB28181接入SDK(SmartGBD),为这一问题提供了高效解决方案,本文将深入探讨SmartGBD的技术特点、功能支持及其在实际场景中的应用。
一、SmartGBD概述
SmartGBD是一款专为Android平台设计的GB28181接入SDK,它能够使不具备国标音视频能力的Android终端通过平台注册接入到现有的GB/T28181—2016或GB/T28181—2022服务。这一SDK的推出,极大地拓展了Android设备在视频监控、智慧物联等领域的应用场景,如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公等。

二、技术特点与优势
(一)全自研框架与自适应算法
SmartGBD采用全自研框架,具有易于扩展的特点。其自适应算法能够有效降低延迟,提高采集、编码和传输的效率。这一特性对于实时性要求较高的应用场景,如远程办公、智慧交通等,尤为重要。通过优化算法,SmartGBD能够在保证音视频质量的同时,减少数据传输的延迟,提升用户体验。
(二)多功能支持
SmartGBD以SDK接口形式提供所有功能,并支持状态反馈。这意味着开发者可以方便地集成和使用这些功能,同时能够实时监控SDK的运行状态,及时处理可能出现的问题。此外,SmartGBD还支持同时运行RTMP直播推送SDK、轻量级RTSP服务SDK和录像SDK,为开发者提供了丰富的功能选择,满足不同场景下的需求。
(三)外部数据源接入
SmartGBD支持外部YUV/RGB/H.264/H.265/AAC数据源接入,这使得开发者可以灵活地将各种音视频数据接入到GB28181平台。例如,可以通过拉取RTSP或RTMP流的方式,将其他IPC的RTSP流接入到国标平台。这一功能在实际应用中非常实用,尤其是在需要整合多种设备和数据源的场景中,如智慧工地、雪亮工程等。
(四)参数灵活配置
SmartGBD的所有参数均可通过SDK接口单独设置,同时也支持默认参数的傻瓜式设置。这一设计既满足了专业开发者对参数精细调控的需求,又降低了新手的使用门槛。开发者可以根据具体需求,灵活调整编码参数、传输协议等,以达到最佳的音视频传输效果。
三、功能支持

(一)音视频格式支持
SmartGBD支持多种音视频格式,包括H.264/H.265(Android H.265硬编码)、G.711 A律、AAC等。这使得开发者可以根据设备的硬件能力和实际需求,选择合适的编码格式,以达到最佳的音视频质量和传输效率。此外,SmartGBD还支持软硬编码参数配置,如GOP间隔、帧率、码率等,进一步提升了音视频传输的灵活性和可控性。
(二)音量调节与静音功能
在音频处理方面,SmartGBD支持实时音量调节和实时静音/取消静音功能。这在需要对音频进行精细控制的场景中非常有用,如远程办公、语音对讲等。开发者可以通过SDK接口实时调整音频的音量,或者在需要时快速静音,提升用户体验。
(三)视频处理功能
SmartGBD支持多种视频处理功能,如横屏、竖屏推流、前置摄像头实时镜像、动态文字水印和png水印等。这些功能在实际应用中可以满足不同的需求,例如在智慧教育场景中,可以通过前置摄像头镜像功能实现教师的实时教学画面;在视频监控场景中,可以通过水印功能添加时间、地点等信息,增强视频的实用性和安全性。
(四)媒体传输与信令处理
SmartGBD支持RTP OVER UDP和RTP OVER TCP被动模式,以及信令通道网络传输协议TCP/UDP设置。这使得开发者可以根据网络环境和实际需求,选择合适的传输协议,以保证音视频数据的稳定传输。此外,SmartGBD还支持注册、注销、注册刷新及注册有效期设置,以及设备目录查询应答、心跳机制等功能,确保设备能够稳定地接入到GB28181平台。
(五)扩展功能
SmartGBD还支持多种扩展功能,如移动设备位置订阅和通知、图像抓拍、历史视音频文件检索、下载和回放、云台控制和预置位查询等。这些功能在实际应用中非常实用,例如在智慧交通场景中,可以通过移动设备位置订阅功能实时掌握车辆位置;在智能监控场景中,可以通过图像抓拍功能获取关键画面,提升监控效率。
四、实际应用场景
(一)执法记录仪
在执法记录仪场景中,SmartGBD可以实现执法过程的实时记录和远程监控。通过GB28181协议,执法记录仪可以将采集的音视频数据实时传输到公安部门的监控系统中,确保执法过程的透明和公正。
(二)智能监控
在智能监控场景中,SmartGBD可以实现监控设备与各级平台的互联互通。通过GB28181协议,监控设备可以将采集的音视频数据传输到监控中心,实现对监控区域的实时监控和管理。
(三)智慧教育
在智慧教育场景中,SmartGBD可以实现远程教学和校园安全监控。通过GB28181协议,教学设备可以将采集的音视频数据传输到教学平台,实现远程教学和互动;同时,监控设备可以将采集的音视频数据传输到监控中心,实现对校园安全的实时监控。
(四)远程办公
在远程办公场景中,SmartGBD可以实现音视频数据的高效传输。通过GB28181协议,远程办公设备可以将采集的音视频数据传输到会议平台,实现远程会议的流畅进行,提升工作效率。
五、Android平台接入GB28181具体流程
1. 需求分析
根据 GB28181 设备接入端的业务需求,确定需要接入的设备类型和功能需求。例如,明确设备是用于执法记录、智能监控还是智慧教育等场景,以及需要实现的具体功能,如音视频传输、图像抓拍、语音对讲等。
2. 设备选型
选择符合 GB28181 协议的 Android 终端设备,并确保设备具备必要的硬件配置。比如,设备应具备摄像头、麦克风等音视频采集硬件,以及足够的处理能力和网络连接能力。
3. SDK 集成
将 SmartGBD 集成到 Android 项目中,具体步骤如下:
-
添加文件 :确保 SmartPublisherJniV2.java 放到 com.daniulive.smartpublisher 包名下,如需集成语音广播、语音对讲功能,确保 SmartPlayerJniV2.java 放到 com.daniulive.smartplayer 包名下;将 smartavengine.jar 和 smartgbsipagent.jar 加入到工程,同时拷贝 libSmartPublisher.so 和 libSmartPlayer.so(如需语音广播或语音对讲)到工程。
-
配置权限 :在 AndroidManifest.xml 中添加相关权限,如 WRITE_EXTERNAL_STORAGE、INTERNET、MOUNT_UNMOUNT_FILESYSTEMS、MODIFY_AUDIO_SETTINGS、ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION 等。
-
加载库文件 :通过代码加载相关 so 库,如
System.loadLibrary("SmartPublisher")和System.loadLibrary("SmartPlayer")。 -
配置 build.gradle :在 build.gradle 中配置 32/64 位库,如
splits { abi { enable true include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' universalApk true } }。 -
修改 app 名称 :如需集成到自己系统测试,需在 strings.xml 中修改 app_name,如
<string name="app_name">SmartPublisherSDKDemo</string>。
4. 设备注册
实现设备的注册功能,确保设备能够成功接入到 GB28181 平台。这包括调用 SDK 提供的相关接口,设置设备的注册信息,如设备 ID、设备密码、注册服务器地址等,并通过信令通道与平台进行注册交互。
5. 信令处理
根据 GB28181 协议要求,实现信令的编解码、交换与处理功能。利用 Socket 编程实现与设备的通信,遵循 GB28181 协议规定的信令格式和流程,处理注册、心跳、设备位置请求等信令。
6. 媒体传输
配置音视频数据的传输,确保数据的稳定性和实时性。可以通过拉取 RTSP 或 RTMP 流的方式,将视频数据接入到 GB28181 平台。同时,根据需求配置音视频的编码格式、分辨率、帧率等参数,以满足不同场景下的传输要求。
7. 功能扩展
根据具体需求,扩展支持的功能,如:
-
移动设备位置订阅和通知 :实现设备位置信息的采集和上报,以及对位置信息的订阅和通知功能,以便在需要时获取设备的实时位置。
-
图像抓拍 :支持在音视频流中抓取特定时刻的图像,并将其保存或传输到指定位置。
-
语音广播和语音对讲 :实现语音的广播和双向对讲功能,满足在不同场景下的语音通信需求。
-
历史视音频下载和回放 :支持对设备存储的历史视音频文件进行检索、下载和回放,方便进行事后查看和分析。
8. 测试与优化
进行充分的测试,包括功能测试、稳定性测试、兼容性测试等,确保设备能够稳定地接入到国标 28181 服务平台。同时,对系统进行性能优化,如减少内存占用、降低 CPU 使用率等,以提高设备的运行效率和用户体验。
六、总结
大牛直播SDK推出的Android平台GB28181接入SDK(SmartGBD),为不具备国标音视频能力的Android终端提供了便捷的接入方式。其全自研框架、多功能支持、外部数据源接入和参数灵活配置等技术特点,使其在实际应用中具有广泛的应用前景。通过SmartGBD,开发者可以轻松实现Android设备的GB28181接入,拓展设备的应用场景,提升用户体验。希望本文能够为开发者提供有价值的参考,推动GB28181协议在Android平台上的应用和发展。以上抛砖引玉,感兴趣的开发者,可以单独跟我沟通交流。
相关文章:
深度解析SmartGBD助力Android音视频数据接入GB28181平台
在当今数字化时代,视频监控与音视频通信技术在各行各业的应用愈发广泛。GB28181协议作为中国国家标准,为视频监控设备的互联互通提供了规范,但在实际应用中,许多Android终端设备并不具备国标音视频能力,这限制了其在相…...
前端兼容处理接口返回的文件流或json数据
参考文档:JavaScript | MDN 参考链接:Blob格式转json格式,拿到后端返回的json数据_blob转json-CSDN博客 参考链接:https://juejin.cn/post/7117939029567340557 场景:导入上传文件,导入成功,…...
Eclipse 透视图 (Perspective)
Eclipse 透视图 (Perspective) Eclipse 是一款强大的集成开发环境(IDE),广泛应用于 Java 开发领域。其中,透视图(Perspective)是 Eclipse 中的一个核心概念,它将不同的工具和视图组合在一起,以便开发者能够更高效地完成特定的开发任务。本文将详细介绍 Eclipse 透视图…...
嵌入式硬件篇---滤波器
文章目录 前言一、模拟电子技术中的滤波器1. 基本概念功能实现方式 2. 分类按频率响应低通滤波器高通滤波器带通滤波器带阻滤波器 按实现方式无源滤波器有源滤波器 3. 设计方法巴特沃斯滤波器(Butterworth)切比雪夫滤波器(Chebyshevÿ…...
从零到一学习c++(基础篇--筑基期十一-类)
从零到一学习C(基础篇) 作者:羡鱼肘子 温馨提示1:本篇是记录我的学习经历,会有不少片面的认知,万分期待您的指正。 温馨提示2:本篇会尽量用更加通俗的语言介绍c的基础,用通俗的语言去…...
Java基础常见的面试题(易错!!)
面试题一:为什么 Java 不支持多继承 Java 不支持多继承主要是为避免 “菱形继承问题”(又称 “钻石问题”),即一个子类从多个父类继承到同名方法或属性时,编译器无法确定该调用哪个父类的成员。同时,多继承…...
DPVS-2:单臂负载均衡测试
上一篇编译安装了DPVS,这一篇开启DPVS的负载均衡测试 : 单臂 FULL NAT模式 拓扑-单臂 单臂模式 DPVS 单独物理机 CLINET,和两个RS都是另一个物理机的虚拟机,它们网卡都绑定在一个桥上br0 , 二层互通。 启动DPVS …...
C#中提供的多种集合类以及适用场景
在 C# 中,有多种集合类可供使用,它们分别适用于不同的场景,部分代码示例提供了LeetCode相关的代码应用。 1. 数组(Array) 特点 固定大小:在创建数组时需要指定其长度,之后无法动态改变。连续存储…...
【蓝桥杯集训·每日一题2025】 AcWing 6135. 奶牛体检 python
6135. 奶牛体检 Week 1 2月21日 农夫约翰的 N N N 头奶牛站成一行,奶牛 1 1 1 在队伍的最前面,奶牛 N N N 在队伍的最后面。 农夫约翰的奶牛也有许多不同的品种。 他用从 1 1 1 到 N N N 的整数来表示每一品种。 队伍从前到后第 i i i 头奶牛的…...
【为什么用pg数据库用 != null 过滤不出null值】
为什么用pg数据库用 ! null 过滤不出null值 1. NULL 的特殊性质2. 为什么 ! null 无效3. 正确的过滤 NULL 的方式示例 4. 为什么 IS NULL 和 IS NOT NULL 有效5. 示例对比6. 总结 在 PostgreSQL 中,使用 ! null 过滤不出 NULL 值的原因与 SQL 标准中 NULL 的特殊性质…...
Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)
笔记链接:https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL...
Kubernetes开发环境minikube | 开发部署MySQL单节点应用
minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署MySQL单节点应用 minikube start --force kubectl get nodes 如上所示,启动minikube单节点运行环境 minikube ssh docker pull 如上所示,从MySQL官…...
大厂数据仓库数仓建模面试题及参考答案
目录 什么是数据仓库,和数据库有什么区别? 数据仓库的基本原理是什么? 数据仓库架构是怎样的? 数据仓库分层(层级划分),每层做什么?分层的好处是什么?数据分层是根据什么?数仓分层的原则与思路是什么? 数仓建模常用模型有哪些?区别、优缺点是什么?星型模型和雪…...
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票 作者:某七年数据开发工程师 | 2025年02月23日 关键词:SQL窗口函数、连续问题、股票分析、腾讯面试题 一、问题背景与难点拆解 在股票量化分析场景中,"连续N天满足条件"是高频面试题类型。本题要求在单表stoc…...
安装可视化jar包部署平台JarManage
一、下载 下载地址:JarManage 发行版 - Gitee.com 🚒 下载 最新发行版 下载zip的里面linux和windows版本都有 二、运行 上传到服务器,解压进入目录 🚚 执行java -jar jarmanage-depoly.jar 命令运行 java -jar jarmanage-dep…...
基于数据可视化+SpringBoot+安卓端的数字化OA公司管理平台设计和实现
博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…...
输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索 【效果图】:分组展示选项 >【去界面操作体…...
性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术
??关注,带你探索Java的奥秘!?? ??超萌技术攻略,轻松晋级编程高手!?? ??技术宝库已备好,就等你来挖掘!?? ??订阅,智趣学习不孤单!?? ??即刻启航,编…...
unity学习53:UI的子容器:面板panel
目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…...
4-知识图谱的抽取与构建-4_2实体识别与分类
🌟 知识图谱的实体识别与分类🔥 🔍 什么是实体识别与分类? 实体识别(Entity Recognition)是从文本中提取出具体的事物,如人名、地名、组织名等。分类(Entity Classification&#x…...
elasticsearch在windows上的配置
写在最前面: 上资源 第一步 解压: 第二步 配置两个环境变量 第三步 如果是其他资源需要将标蓝的文件中的内容加一句 xpack.security.enabled: false 不同版本的yaml文件可能配置不同,末尾加这个 xpack.security.enabled: true打开bin目…...
详解分布式ID实践
引言 分布式ID,所谓的分布式ID,就是针对整个系统而言,任何时刻获取一个ID,无论系统处于何种情况,该值不会与之前产生的值重复,之后获取分布式ID时,也不会再获取到与其相同的值,它是…...
如何在 Vue 项目中为 `el-pagination` 设置中文
文章目录 前言1. 安装 Element Plus2. 引入中文语言包3. 配置中文语言环境4. 使用 el-pagination 组件5. 确保其他组件支持中文6. 语言切换(可选)总结 前言 在 Vue 项目中,Element Plus 是一个流行的 UI 组件库,它提供了许多常用…...
PostgreSQL:更新字段慢
目录标题 PostgreSQL 慢查询优化与 pg_stat_statements 使用1. 启用慢查询日志2. 使用 pg_stat_statements 扩展收集查询统计信息3. 查找执行时间较长的查询4. 分析慢查询的执行计划5. 优化查询6. 检查并发连接和系统资源7. 进一步优化8. 查看某条SQL1. **如何生成 query_id**2…...
【Rust中级教程】2.8. API设计原则之灵活性(flexible) Pt.4:显式析构函数的问题及3种解决方案
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 说句题外话,这篇文章一共5721个字,是我截至目前写的最长的一篇文章&a…...
【复习】Redis
数据结构 Redis常见的数据结构 String:缓存对象Hash:缓存对象、购物车List:消息队列Set:点赞、共同关注ZSet:排序 Zset底层? Zset底层的数据结构是由压缩链表或跳表实现的 如果有序集合的元素 < 12…...
STM32使用NRF2401进行数据传送
NRF2401是一款由Nordic Semiconductor公司生产的单片射频收发芯片,以下是关于它的详细介绍: 一、主要特点 工作频段:NRF2401工作于2.4~2.5GHz的ISM(工业、科学和医疗)频段,该频段无需申请即可使用…...
Fetch API 与 XMLHttpRequest:深入剖析异步请求的利器
Hi,我是布兰妮甜 !在现代 Web 开发中,异步通信是实现动态和交互式用户体验的基石。XMLHttpRequest (XHR) 作为老牌劲旅,曾一度统治着这一领域。然而,随着 Fetch API 的横空出世,开发者们迎来了一个更现代、…...
如何生成traceid以及可视化展示
根据你的需求,以下是一些可以生成唯一 traceId 并用于分布式链路追踪的工具和项目,这些项目支持生成唯一的 traceId,并将其用于日志记录和分布式追踪: 1. OpenTelemetry OpenTelemetry 是一个开源的观测框架,支持生成…...
【LeetCode541】反转字符串
题目描述 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前…...
