Android前端音视频数据接入GB28181平台意义

2023-11-14

技术背景

在我们研发Android平台GB28181前端音视频接入模块之前,业内听到最多的是,如何用Android或者Windows端,在没有国标IPC设备的前提下,模拟GB28181的信令和媒体流交互流程,实现GB28181整体方案的测试?

Android端真的没有必要做个支持GB28181的接入模块?

如果说做一个设备端IPC国标设备接入模拟模块是完成从0到1的工作,那么从设备端模拟IPC到一个可以产品化的Android平台GB28181前端音视频接入模块,需要更严谨更符合相关spec的方式,实现不具备国标音视频能力的Android终端,通过平台注册的形式,接入到现有的GB28181服务,最终用于如智能监控、智慧零售、智慧教育、远程办公、生产运输、智慧交通、车载或执法记录仪等场景,可以说应用场景非常广泛。

除了支持常规的音视频媒体流数据接入外,还可以支持Subscribe订阅实时位置(MobilePosition)、实时目录查询等,完成标准服务的对接。产品设计方面,媒体流支持最新GB28181-2016的UDP和TCP被动模式,参数配置,支持注册有效期、心跳间隔、心跳间隔次数、TCP/UDP信令设置,支持RTP Sender IP地址类型、RTP Socket本地端口、SS-R-C、RTP socket 发送Buffer大小、RTP时间戳时钟频率设置,支持注册成功、注册超时、INVITE、ACK、BYE状态回调。

设计思路

信令设计和媒体数据传输分离,上层实现国标GB28181的注册、注销、CATALOG、INVITE、ACK、BYE、SUBSCRIBE等交互处理,如注册成功后,返回注册时间,并检测传输或心跳等异常状态,服务端发送catalog请求后,组织本地catalog信息,并以message的形式发送到服务端,服务端收到相关信息后,开始发送invite请求,客户端解析INVITE返回的SDP信息,组织相关的response,创建RTP Sender,根据返回的信息,设定相关参数。待收到服务端的Ack后,发送编码、打包后的媒体流数据。在此期间,按照设定间隔,定时发送keepalive。

如上图所示,模块除了常规的音视频参数配置外,系统可同时亦或单独实现如RTMP推送、RTSP推送、轻量级RTSP服务、实时录像、GB28181前端接入。

信令接口设计:

public interface GBSIPAgent {
    void addListener(GBSIPAgentListener listener);
 
    /*
     * 设置SIP本地链接地址
     * @param address 本地IP地址, 如192.168.0.111
     * @param port本地SIP端口, 如 15070
     */
    void setLocalAddressInfo(String address, int port);
 
    /*
     * 设置SIP Server配置参数
     * @param address SIP服务器地址, 如 192.168.0.101
     * @param port SIP服务器端口, 如 15060
     * @param id SIP服务器ID, 如 34020000002000000001
     * @param domain SIP服务器域, 如 3402000000
     */
    void setServerParameter(String address, int port, String id, String domain);
 
    /*
     * 设置GB28181 SIP User配置参数
     * @param userName SIP用户名, 如 34020000001110000045
     * @param password 如 123456
     */
    void setUserInfo(String userName, String password);
 
 
    /*
     * 设置SIP请求头中的UserAgent
     * @param userAgent用户代理
     */
    void setUserAgent(String userAgent);
 
    /*
     * 设置SIP传输协议
     * @param transport_protocol, 设置SIP信令传输协议: UDP, TCP, 默认是UDP
     */
    void setTransportProtocol(String transport_protocol);
 
    /*
     * 设置GB28181配置参数
     * @param regExpired 注册有效期, 单位: 秒, 如 3600
     * @param heartBeatInterval 心跳间隔, 单位: 秒, 默认60
     * @param heartBeatCount 心跳超时次数, 默认3次
     */
    void config(int regExpired, int heartBeatInterval, int heartBeatCount);
 
    void clearDevices();
 
    boolean addDevice(Device device);
 
    boolean initialize();
 
    /*
    *启动
     */
    boolean start();
 
    boolean isRunning();
 
    /*
    *响应Invite play 200OK
     */
    boolean respondPlayInviteOK(String deviceId, String localAddress, int localPort);
 
    /*
    *响应Invite play其他状态码
     */
    boolean respondPlayInvite(int statusCode, String deviceId);
 
    /*
    *终止会话
     */
    void terminatePlay(String deviceId, boolean isSendBYE);
 
    /*
    *终止所有会话
     */
    void terminateAllPlays(boolean isSendBYE);
 
    /*
     *停止
     */
    void stop();
 
    void unInitialize();
}

相关状态回调:

public interface GBSIPAgentListener
{
    /*注册成功
    * @param dateString: 服务器日期,用来矫正设备端时间,用户自行决定是否矫正设备时间
    */
    void ntsRegisterOK(String dateString);
 
    /*
    *注册超时
    */
    void ntsRegisterTimeout();
 
    /*
    *注册网络传输曾异常
    */
    void ntsRegisterTransportError(String errorInfo);
 
    /*
    *心跳达到异常次数
    */
    void ntsOnHeartBeatException(int exceptionCount, String lastExceptionInfo);
 
    /*
    *收到s=Play的实时视音频点播
    */
    void ntsOnInvitePlay(String deviceId, InvitePlaySessionDescription 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);
 
    /*
     * Play会话对应的对话终止, 一般不会出发这个回调,目前只有在响应了200K, 但在64*T1时间后还没收到ACK,才可能会出发
    收到这个, 请做相关清理处理
    */
    void ntsOnPlayDialogTerminated(String deviceId);
}

总结

Android平台GB28181音视频接入模块研发之前,大牛直播SDK(官方)已经在RTSP、RTMP和音视频采集、编码传输等有了多年积累,GB28181接入,对我们来说,只是在现有架构的基础上,完成信令交互和数据打包传输(H264, H265打包成PS流,然后拆成RTP包发送即可),RTP传输支持TCP、UDP模式,配合国标28181服务器测试,延时非常低,设计支持多通道,可实现RTSP或RTMP流数据到GB28181的转换。为Android平台赋能,像支持GB28181协议的IPC一样,方便的把摄像头、屏幕、麦克风或外部RTSP、RTMP流,顺利接入到GB28181平台。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android前端音视频数据接入GB28181平台意义 的相关文章

  • GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放

    技术背景 我们在对接GB28181设备接入模块的时候 遇到这样的技术诉求 好多开发者期望能提供编码后 H 264 H 265 AAC PCMA 数据对接 确保外部采集设备 比如无人机类似回调过来的数据 直接通过模块 对接到GB28181平台
  • 【技术分享】如何实现功能完备性能优异的RTMP、RTSP播放器?

    技术背景 这几年 我们对接了太多有RTSP或RTMP直播播放器诉求的开发者 他们当中除了寻求完整的解决方案的 还有些是技术探讨 希望能借鉴我们播放端的开发思路或功能特性 完善自己的产品 忙里偷闲 今天我们就再聊一聊老生常谈的问题 如何实现功
  • H.264(H264)视频文件的制作

    一 准备工作 1 下载并安装优酷客户端 2 下载ffmpeg可执行文件 解压可用 不需要下载源码自己编译 ffmpeg可执行文件下载链接 http download csdn net detail caoshangpa 9492758 二
  • H264 NALU 使用PS封装 RTP发送

    最近由于项目平台需求 要将H264 NALU封装为PS再用RTP发送 PS封装按照ISO DEC 13818 1标准 一个PS包包含PS Header PES Header PS system header PS system map等 针
  • WebRTC实现多人视频聊天

    写在前面 实现房间内人员的视频聊天 由于并未很完善 所以需要严格按照步骤来 当然基于此完善 就是时间的问题了 架构 整个设计架构如下 图片来自于参考博文 我使用的是第一种Mesh 架构 无需任何流媒体服务器 直接利用成熟的WebRTC 协议
  • rtmp/rtsp/hls公网真正可用的测试地址

    相信大家在调试播放器的时候 都有这样的困惑 很难找到合适的公有测试源 以下是大牛直播SDK GitHub地址 整理的真正可用的直播地址源 其中 rtmp和rtsp的url 用我们播放器验证通过 1 rtmp 58 200 131 2 193
  • GB28181-2022注册注销基本要求、注册重定向解读和技术实现

    规范解读 GB28181 2022注册 注销基本要求相对GB28181 2016版本 做了一定的调整 新调整的部分如下 更改了注册和注销基本要求 见 9 1 1 2016 年版的 9 1 1 1 增加对NAT模式网络传输要求 宜增加TCP传
  • Linux平台如何实现采集音视频数据并注入轻量级RTSP服务?

    技术背景 好多开发者 问我们最多的问题是 为什么要设计轻量级RTSP服务 轻量级RTSP服务 和RTSP服务有什么区别 针对这个问题 我们的回答是 轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP服务或者RTMP服务 R
  • 海康、大华网络摄像机RTSP URL格式组成及参数配置

    经常有开发者咨询我们关于海康 大华网络摄像机RTSP url拼接规则和相关参数配置 虽然很简单 考虑到资料不全 写个博客记录下 1 海康摄像机 在IE浏览器输入网络摄像机的IP地址 输入配置的用户名 密码 登陆 视频 1 码率类型 主码流和
  • 交换机端口镜像及Wireshake抓包

    1 首先配置交换机 先将交换机断开与其他交换机连接的网线 保证电脑端只与这一个交换机通信 2 之前配置过交换机的 如果记得IP 可以直接通过交换机的IP进行登录 3 如果忘记交换机的IP 则可以重置 交换机上有一个reset按键 重置后 我
  • Android平台GB28181设备接入模块分辨率发生变化怎么办?

    技术背景 我们在做Android平台gb28181设备接入模块的时候 遇到这样的情况 比如横竖屏分辨率不锁定 采集摄像头的时候 可以实现 横屏状态采集横屏 竖屏状态采集竖屏 简单来说 横屏状态比如采集的1280 720的 竖屏状态 采集的数
  • GB28181媒体保活机制探究与实现

    规范解读 GB28181 2016和GB28181 2022关于媒体保活机制这块 并无调整 平台 设备媒体流保活机制规定如下 a 链路建立后 码流经过的各级平台应具备媒体流丢失监测能力 若监测到媒体流丢失 应释放该条媒体链路 并通过会话内B
  • GB28181平台如何接入无人机实现智能巡检?

    大家都知道 无人机巡检系统 有效解决了传统巡查工作空间和时间局限问题 降低人力工作成本 有效替代人工巡检工作模式 智能巡检系统通过人工智能技术和机械智能技术完美结合 在工业等场景下 应用非常广泛 本文旨在讲如何实现无人机 如大疆无人机 数据
  • [轻量级RTSP服务]Linux

    背景 随着国产操作系统的推进 传统行业对Linux平台的呼声和需求越来越大 之前几年 我们发布了Linux平台运营商级的RTSP转RTMP推送模块 RTMP推送模块和RTSP RTMP播放模块 前段时间 有开发者问我们 是不是可以在Linu
  • GB/T28181-2022针对H.265、AAC的说明和技术实现

    GB T28181 2022规范说明 GB T28181 2022相对来GB T28181 2016针对H 265 AAC的更新如下 更改了 联网系统通信协议结构图 媒体流通道增加了 H 265 G 722 1 AAC 见 4 3 1 20
  • 前端实现预览功能,播放rtsp视频流(node.js+ffmpeg+flv.js)

    实现思路 获取摄像头rtsp流 通过node js ffmpeg转码 通过哔哩哔哩flv js播放 1 获取摄像机RTSP流 之前文章有说明不多阐述 2 配置流媒体服务器 1 下载安装node js 运行node js 网上教程很多自行下载
  • 格式工厂5.10.0版本安装

    目前格式工厂有很多 大多都可以进行视频转换 之前遇到一个用ffmpeg拉流保存的MP4在vlc和迅雷都无法正常播放的问题 发现视频长度不对 声音也不对 最后换到了格式工厂的格式播放器是可以正常播放的 格式工厂下载之家的地址 https ww
  • 最新VLC命令行参数大全(一)

    用法 vlc 选项 流 您可以在命令行中指定多个流 它们将被加入播放列表队列 指定的首个项目将被首先播放 选项风格 选项 用于设置程序执行期间的全局选项 选项 单字母版本的全局 选项 选项 仅对此选项之前的单条流生效 且优先级高于先前的设置
  • Android平台GB28181设备接入侧(编码前

    在之前 我有写过Android平台GB28181设备接入模块的好多blog 包括参数设置 功能支持与扩展等 以数据接入为例 支持的数据类型涉及编码前 编码后或直接流数据 RTSP或RTMP流 可用于如智能监控 智慧零售 智慧教育 远程办公
  • GB28181状态信息报送解读及Android端国标设备接入技术实现

    今天主要聊聊GB T28181状态信息报送这块 先回顾下协议规范相关细节 然后再针对代码实现 做个简单的说明 状态消息报送基本要求 当源设备 包括网关 SIP设备 SIP客户端或联网系统 发现工作异常时 应立即向本 SIP监控域 的SIP服

随机推荐

  • apache配置指令速查

    AcceptFilter AcceptFilter 指令 说明 根据协议类型对监听Socket进行优化 语法 AcceptFilter protocol accept filter 作用域 server config 状态 核心 C 模块
  • 全局配置_中兴天机配置公布:智汇屏+全局黑暗模式

    宅男科技12月16日消息 中兴今日正式在其官方社交账号上公布了即将发售的中兴天机Axon 10s Pro 5G的配置参数 并表示新机将于2020年年初正式对外发布 据悉 即将面世的中兴天机Axon 10s Pro 5G将会搭载最新的骁龙86
  • 『Newsletter 丨第二期』PieCloudDB Database 新增控制台、LDAP 支持、虚拟数仓日志等多项功能

    PieCloudDB Database 最新动态 云上云版 控制台 功能上线 PieCloudDB 云上云版 控制台 功能全新上线 控制台集成了组织 数仓 用户 费用 权限等多方位管理功能 支持在一个组织下创建和管理多个数仓 并支持独立的一
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • arduino黑线循迹小车程序_基于arduino的循迹小车(含有PID算法)

    循迹小车一般分为两方面 一方面是简单的闭环赛道只有直道和弯道 另一方面是毕设类型的包括一些元素 90度弯道 十字道路 S形弯道等 本篇博客试根据下图来进行书写的 如果大家有什么新的元素 也可以在下方评论 我进行更新 作者 sumjess 注
  • linux字符串转数字

    转载 https www cnblogs com baofengc p 9042128 html 方法一 echo 96 56 awk print int 0 输出结果 96 方法二 A 2 B 51 let C A B echo C 方法
  • static在c语言中的作用_C语言关键字 static 的用法

    接上文 C语言的32个关键字 C语言 static 关键字的常见用法有三种 用于局部变量的修饰符 用于全局变量的修饰符 用于函数的修饰符 1 用于局部变量的修饰符 当 static 用于修饰局部变量时 通常是在某个函数体内 只能在该函数内被
  • zabbix如何监控linux磁盘性能IO

    前提环境 perl和python 以及zabbix agent已是可用状态 需要主要监控的指标 1 每秒IO数 即iops或tps 2 吞吐率 3 平均IO尺寸 avgrq sz 4 IO等待队列长度 avgqu sz 5 磁盘活动时间百分
  • 阅人有术

    第一部分 阅人 人生的必修课 没有人能隐于世外 无论你走到哪里 都会碰到人 你必须与之相处 因为人无所不在 你必须了解人 因为你永远无法独自成功 不同的人每天都不得不重复着同一个古老而新鲜的游戏 与人打交道 这个游戏的古老在于 人类就是这样
  • Odoo Wizard界面显示带有复选框列表及勾选数据获取 Python

    Odoo Wizard界面显示带有复选框列表及勾选数据获取 Python 在Odoo应用程序中 Wizard 向导 是一种常用的界面元素 用于引导用户完成特定任务 在这篇文章中 我们将学习如何在Odoo的Wizard界面中显示带有复选框列表
  • GoFrame带你从0-1快速入门

    文章目录 GoFrame 带你从 0 1 快速入门 一 GoFrame介绍 1 1GF基本介绍 1 2GF特点 1 3GF地址 1 4GF框架 二 GoFrame基础环境搭建 2 1环境搭建 1 安装golang 2 安装goland 3
  • Java源码分析(二)Double

    本篇是源码分析的第二篇 上篇我们一起分析了Integer类的源码 本篇一起学习下Double类的源码 看下其实现 一 Double类图 首先 相比Integer Double类的源码只有1000 行代码 如下是Integer及其关联类 接口
  • Ubuntu 安装、卸载JDK

    JDK 介绍 Open JDK 和 Oracle JDK区别 OpenJDK是Java开发工具包的开源实现 Oracle JDK是Java开发工具包的官方Oracle版本 尽管OpenJDK已经足够满足大多数的案例 但是许多程序比如Andr
  • 【Java预科】CH01 MarkDown语法

    1 标题 空格 标题名字 空格 二级标题 越多字体越小 最多只到六级 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 七级标题不存在 2 文字 加粗 在目标文字前后加 斜体 在目标文字前后加 斜体 加粗 在目标文字前后加 删除线
  • IOException parsing XML document from ServletContext resource [/<NONE>]; closed - call ‘refresh‘

    问题描述 SpringMVC项目添加ContextLoaderListener后无法启动
  • Qt事件(Event)

    事件Event 1 事件的概述 2 通过QLabel了解事件的操作 3 重写事件 4 重写鼠标按下事件 5 获取鼠标按下或移动的坐标 6 查看的QMouseEvent的信息 7 判断button的返回值 8 判断鼠标的哪个按键按下 9 判断
  • java中的throwable异常和错误

    Java中有个java lang Throwable类 这个类是Java中所有异常和错误的基类 Throwable下有两个大类那就是异常 Exception 和错误 Error Throwable 有两个重要的子类 Exception 异常
  • mysql的docker镜像数据库初始化踩坑记

    一 制作docker镜像 在当前目录新建子目录script 将数据库初始化脚本拷贝进去 后缀名为 sql 脚本执行顺序是按字母大小排序 建议可以按 1 xxx sql 2 xxx sql这样命令 Dockerfile如下 FROM mysq
  • aps和php撒意思?,aps-c画幅是什么意思

    aps c画幅是指数码相机的CCD CMOS 的尺寸与APS的C型画幅大小相仿 在25mmX17mm左右 差不多是全画幅CCD CMOS 面积的一半 也称半幅机 本文演示环境 Windows7系统 Dell G3电脑 APS C画幅意思 A
  • Android前端音视频数据接入GB28181平台意义

    技术背景 在我们研发Android平台GB28181前端音视频接入模块之前 业内听到最多的是 如何用Android或者Windows端 在没有国标IPC设备的前提下 模拟GB28181的信令和媒体流交互流程 实现GB28181整体方案的测试