-
2020-03-03 16:40:16
武汉一直笼罩在新冠状病毒的疫情中,我不喜欢在朋友圈拿疫情去炒作,但我知道,如果真的智能AI智能识别,智能机器人,自动驾驶,远程分级诊疗等热门技术如果只要有一样能够落地能够应用,武汉的疫情不会如此被动。所以一切不以应用为目的的技术炒作都是耍流氓。
待在家里无法出门,解决了食物的储备后,无聊至极,于是想着干脆开发GB28181的客户端手机版APP以度过闲暇时光。下面开始言归正传。
我有过做android解码器的经历,那是在上家公司,当时从0开始,那是android版本主流是4.4.2,刚开始用ffmpeg解码,opengles显示渲染,音频用opensl,native c++实现,后来要多路解码,支持H265解码,使用硬解。公司做军品,硬件固定型号,为了追求低延时直接从源码上修改了编译,基本是针对指定硬件的方案,兼容性差。
而本次GB28181移动客户端的开发,解码和渲染是少不了的。对于这种手机APP,我首先考虑的是性能和兼容性。而且现在手机版本都到android 10了,所以兼容性十分重要。
GB28181协议这一块因为之前PC客户端已实现,基于esosip和osp库,用c++开发的,所以直接移植到android版即可,在android上关键需要实现解码和音视频的渲染播放。
当然我们还是得选择硬解码,android如果硬解码和渲染是一个管线式的流程,可以理解为通过解码后数据块在GPU的显存,通过指针直接丢向ANativeWindow显示,ANativeWindow是natvie c++层的对象,其实它与android java层的surfaceview是关联的,通过如下代码:
private SurfaceView sfvideoview; SurfaceHolder sfholder; long natviewindow = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); sfvideoview = (SurfaceView) findViewById(R.id.videoView); sfholder = sfvideoview.getHolder(); sfholder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { } public void surfaceCreated(SurfaceHolder holder) { if(natviewindow == 0) natviewindow = GbtClientJni.gbtclient_createnativewindow (sfholder.getSurface()); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } }); }
GbtClientJni.gbtclient_createnativewindow函数就是传的surfaceview的surface,该函数必须在surfaceCreated中,因为该函数属于在glrender线程中,渲染相关流程必须要oepngles的rander线程中。我们把surface传入到native层,通过ANativeWindow_fromSurface函数可以得到ANativeWindow,而在底层,ANativeWindow就是渲染解码数据的载体。
ANativeWindow *anw = NULL; anw = ANativeWindow_fromSurface(env, jsurface);
这样就完成了视频渲染的上下层衔接。
对于目前android音频的播放,好像还是两种方案,audiotrack和opensl,我依然选择使用opensl,因为audiotrack靠近底层了,担心其兼容性。对于接口都很简单,无非都是回调函数,然后往里面塞数据。首先取出解码后的音频数据,可以用ffmpeg解码,然后调用opensl的接口:
SLresult result = (*bq)->Enqueue(bq, m_pAudioBuffer, m_nAudioBufferConsumed);
基于有PC版GB28181客户端的基础,解决了移动端设备相关的差异性后,GB28181移动客户端就开发完毕了,如下图:
更多信息
e-mail: yujesoft@163.com
tel: 13971177602
web:www.founu.com
更多相关内容 -
GB28181客户端(模拟IPC设备)
2021-12-08 14:58:32该国标客户端模拟一个IPC设备,向SIP服务器注册后,可以接受服务器发来的实时流点播请求,并发RTP+PS流给服务器。 -
GB28181客户端实现,封装sdk接口
2019-08-12 10:23:09GB28181客户端实现,封装sdk接口. (GB28181 client implementation, encapsulation sdk interface.) -
GB28181安卓客户端.zip
2021-01-21 16:33:57两款GB28181安卓客户端DEMO, 可以方便测试连接SIP服务器 -
一种基于GB28181协议的国标客户端实现
2017-11-28 16:37:53GB28181客户端SDK使用手册,一种基于GB28181协议的国标客户端实现 -
gb28181开发源码
2018-06-02 14:06:51本资料包包括基于国标协议编写的gb28181开发源码,可直接用于ARM、DSP架构 -
gb28181 测试平台 QT写的客户端(只有注册部分) gb28181文档
2017-08-28 14:28:54测试平台不需要配置,直接打开服务,然后网页输入自己的http://服务器IP:Port/SIPStandardDebug/#就可以用。客户端只做了注册部分,第一个按钮发第一条命令,第二个按钮发第二条命令。适合初学者入门。 -
国标GB28181客户端EasyGBS如何对接英飞拓视频服务平台?
2020-08-28 14:30:54大家知道国标GB28181视频平台EasyGBS支持跟很多平台做对接,比较常见的是海康视频平台,除海康之外还有大华、英飞拓等视频平台也可以接入EasyGBS。由于近期我们刚好在为一个使用英飞拓平台的项目团队做技术支持,...大家知道国标GB28181视频平台EasyGBS支持跟很多平台做对接,比较常见的是海康视频平台,除海康之外还有大华、英飞拓等视频平台也可以接入EasyGBS。由于近期我们刚好在为一个使用英飞拓平台的项目团队做技术支持,所以本文讲一下英飞拓平台注册EasyGBS平台的几个注意事项。
以下是英飞拓平台接入我们EasyGBS的配置页面:
1、参数配置
这里注意我们的系统参数要与英飞拓平台上面的配置一一对应,以下这些重要信息要大家要注意一下:
外域端口=SIP端口
外域IP = SIP Host
共享编码=SIPID
域名=SIP域名2、接口鉴权
部分用户在英飞拓视频服务平台中配置好信息后,会发现EasyGBS上还是没有英飞拓的视频接入进来,为此我们也与英飞拓平台运维进行了沟通,得知EasyGBS需要打开鉴权才能正常注册英飞拓平台,所以大家注册的时候需要注意,先打开鉴权,再配置用户名和密码(密码需与设备统一接入密码相同)。
3、服务器迁移
如果有用户要对服务器进行迁移,切不可直接在原有的国标配置页里进行修改。由于英飞拓旧版SDK的设定,已经设定好了的国标指向不能进行变更。所以服务器迁移时,需要另外起一个页面进行国标配置。
4、视频接入
部分用户使用英飞拓平台接入EasyGBS后出现以下两种情况:
- 平台在线,设备全部离线
- 设备视频流无法接入进来
这里又是一个注意点,在英飞拓平台里面要将视频数结构拖到服务器配置下面,视频才能接入成功,由于旧版EasyGBS平台不能自动接入,所以我们需要手动配置才能让全部摄像头的视频流接入进来。
EasyGBS视频平台播放界面
由于英飞拓平台使用比较少,所以有些设置上的注意点很少能通过博客的形式为大家展现出来,假如大家在接入的过程中遇到了什么问题,欢迎随时联系我们解决。视频相关解决方案均可访问TSINGSEE青犀视频,如有需求或疑问,欢迎咨询!
-
GB28181 代码Linux
2018-08-13 16:38:09GB28181协议,支持H264编码格式输出视频,支持海康大华等平台 -
GB28181Android.zip
2019-09-05 11:29:40GB28181 Android 端实现, 包括 RTP/PS/H264/G711,demo工程 -
GB28181平台python实现源码
2020-04-30 11:46:45GB28181使用python实现源码 作为上级域对接海康蓝盾平台。包括catalog设备信息,预览设备视频流保存成本地文件以及球机PTZ控制 参考博文 ps流 h264解析 ...ptz控制 ... -
GB28181官方测试工具spvmn.zip
2020-06-23 10:04:35GB28181的官方测试工具,对于正在调试28181的同学有帮助,内有使用教程,可以测试注册,激活等模块功能。 -
GB28181模拟设备和自动化测试工具
2019-08-20 09:57:15这是针对网上的GB28181自动化测试工具写的国标模拟设备,内含有GB28181模拟设备和自动化测试工具,以及自动化测试工具运行不了时的补丁包WinPcap。 -
GB28181相机接入源码VS2013编译运行
2018-01-24 14:23:35GB28181相机接入,VS2013编译运行,所用库的源文件也都在,其他版本的程序可以编译相应的库文件替换即可,网上资料不多 -
[免费]GB28181在IPC功能实现接入总结.rar
2018-01-15 09:51:00GB28181即公安部发布施行的视频监控系统联网标准,配套必须有公安部的调测软件,GB28181协议标准书,DM368 IPC研发平台。 1.2开源库准备 GB28181协议总体来说是依据了SIP协议和XML文本协议作为整个标准实现,所以... -
国标GB28181客户端EasyGBS接入设备显示通道离线是什么原因?
2020-08-18 14:10:50GB28181是国家针对安防领域制定的一个通信协议标准,目的是解决不同平台、不同设备间通信协议不统一的问题。GB28181标准从2011制定的第一个版本开始,到最近的2016版本,制定的协议内容越来越细,越来越完善,这个...GB28181是国家针对安防领域制定的一个通信协议标准,目的是解决不同平台、不同设备间通信协议不统一的问题。GB28181标准从2011制定的第一个版本开始,到最近的2016版本,制定的协议内容越来越细,越来越完善,这个标准在安防领域已经用得非常广泛。
虽然是统一了协议标准,但是各个厂家都是按照自己的理解去研发自己的平台,实现出来的产品总有一些差异性,并且采取封闭策略,平台软件只用在自己项目中,不提供对外使用,而下游厂家、工程商在项目对接的时候经常遇到各种各样的问题。很多刚接触国标的开发员由于不熟悉国标指令,不知道如何在安防监控行业运用国标协议。
TSINGSEE青犀视频团队研发的GB28181客户端EasyGBS就是能够接入国标协议的GB28181视频平台,能够将GB28181设备/平台推送的PS流转成ES流,然后提供RTSP、RTMP、FLV、HLS多种格式进行分发,实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件播放。
今天有位郑州的用户咨询我们,就是有时候接到GB28181客户端EasyGBS里面的设备显示在线,但是点进去之后发现通道全部是离线的,具体截图如下:
设备在线:
通道离线:
首先我们先进入硬盘录像机看下关于国标平台的注册信息,发现数据都是正常的,视频通道编码ID都是正确的。
我们看下硬盘录像机里面通道情况,这时候我们看到这几个设备都是离线的状态,状态上显示用户名密码错误,这就很简单了,填入正确的用户名密码即可,截图如下:
改完之后在硬盘录像机里面就显示摄像机已经显示在线了。
我们再到GB28181客户端EasyGBS里面看一下,通道也全部显示在线了。
-
简单的实现gb28181移动和PC客户端
2020-07-29 14:47:17而GB28181的客户端可以对GB28181整个平台的设备,用户,数据的管理和音视频数据调阅,是整个协议中的人机交互的部分,以终端显示展现,其重要性可想而知。 如何实现GB28181的客户端呢? 首先客户端以用户(20位...GB28181协议是公安视频监控的网络传输标准,为了视音频数据共享,互通而制定的标准协议。
而GB28181的客户端可以对GB28181整个平台的设备,用户,数据的管理和音视频数据调阅,是整个协议中的人机交互的部分,以终端显示展现,其重要性可想而知。
如何实现GB28181的客户端呢?
首先客户端以用户(20位的GB28181约定唯一的UID)的身份注册登录到平台,获取平台上的设备的目录,和设备信息,设备状态。把每个设备的设备信息,设备的通道信息(视频通道,对讲通道,报警通道),是否在线,是否可用,都形象的展示出来。
如下图,我们先看下手机端的设备信息的展现,如下图,其中登录成功后,即向平台请求设备的列表以及其通道信息,完成显示:
显示了平台上所有设备后可以对其进行操作,比如预览,对讲,录像,抓拍,云台控制等等,我们可以用如下PC客户端看下对设备的预览和对讲(当然上面android手机端也是支持的):
GB28181协议是有位置信息的共享和传输的,所以作为客户端,也要对应有位置信息的展示与轨迹的记录,如下图:
客户端的一些功能除了有主动功能外,还要被动功能,比如订阅了设备的报警信息后,对设备的报警信息的响应接收,在手机APP客户端上我们以通知的形式体现,如下图:
点击该notify通知后,会显示该报警信息对应的报警录像和抓拍,可以进行回放和查看,如下图:
GB28181的客户端的功能其实是比较多的,我们列举部分功能,但是如果实现一个GB28181的客户端,基本的思路就是如上所说的。
当然既然发此文,作为GB28181协议的必须的工具,我们的GB28181的PC客户端和手机客户端是可以免费下载免费使用的。 可以点击如下地址下载
更多信息
e-mail: yujesoft@163.com
tel: 13971177602
web:www.founu.com
-
GB28181 会话SIP信令 C++ 实现解析处理
2017-11-23 07:11:16C++ 实现GB28181设备目录请求、视频请求、历史视频回放、等SIP会话,用于视频安防领域 -
GB28181设备SDK
2020-08-13 16:18:58Happytime GB28181设备是符合GB28181标准的程序,支持GB28181 2016版本。 支持GB28181标准2016版的所有功能。 支持H264,H265和PS封装。 支持订阅,通知功能。 支持录音播放,录音下载,支持语音通话和音频广播。 它... -
GB28181国标平台软件(包含服务器和客户端)
2019-11-26 19:25:57GB28181是国家针对安防领域制定的一个通信协议标准,目的是解决不同平台、不同设备间通信协议不统一的问题。GB28181标准从2011制定的第一个版本开始,到最近的2016版本,制定的协议内容越来越细,越来越完善,这个... -
国标GB28181客户端EasyGBS视频平台新增用户管理功能如何使用?
2020-08-19 15:00:18关于EasyGBS EasyGBS流媒体服务器提供流转发服务,负责将GB28181设备/平台推送的PS流转成ES流,然后提供RTSP、RTMP、FLV、HLS多种格式进行分发,实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件播放。... -
GB28181:GB28181使用python实现二进制文件作为上级域对接海康蓝盾平台。包括目录设备信息,预览设备视频流...
2021-03-23 01:43:49GB28181-Python 公司需求研究了一下GB28181协议对接的2011版国标2016版国标向下兼容没有什么大影响使用python实现了此协议,没有具体验证过可以同时预览几路视频流,最多的一次是22路视频流同时预览这个取决与网络的... -
国标GB28181客户端EasyGBS视频平台黑名单功能,保障平台设备接入安全
2020-09-01 16:54:02大家知道TSINGSEE青犀视频的新版国标GB28181客户端EasyGBS视频平台相比旧版增加了不少东西,包括用户管理、视频调阅等界面,还有个功能也是最近才添加的,就是EasyGBS黑名单的功能。黑名单功能的存在是为了阻挡部分... -
国标协议GB28181客户端EasyGBS新增游客登录显示分组列表功能
2020-08-18 14:45:42TSINGSEE青犀视频之前进行升级的国标协议GB28181客户端EasyGBS增加了管理员和游客登录功能,已经在用我们升级版本的用户应该非常了解了。在本文中博主想跟大家聊一下团队开发的过程,做到这么完整的系统,也是细微的... -
国标协议GB28181客户端EasyGBS级联接入下级宇视平台播放卡死报错如何排查?
2020-08-18 14:33:28我们之前的博文为大家介绍过国标协议GB28181客户端EasyGBS如何接入宇视硬盘录像机,除此之外,TSINGSEE青犀视频的平台也是支持接入宇视下级平台进行级联的。 有的政府单位就使用GB28181客户端EasyGBS视频平台做各... -
国标GB28181客户端EasyGBS播放H.265编码如何降低CPU来增加视频传输效率?
2020-08-18 14:24:50TSINGSEE青犀研发的国标GB28181客户端EasyGBS是支持接入GB28181协议摄像头的视频平台,很多进行了版本升级的用户都知道,现在的EasyGBS视频平台里集成了H.265播放器,能够对H.265编码视频有很好的兼容性。... -
GB28181SDK 开源源码
2021-05-09 10:14:24Gb28181 Sdk https://gitee.com/chaigec/gb28181.git。 迭代版本将同步更新。 demo可在:https://download.csdn.net/download/chaigec1/10357771 下载 欢迎交流,学习 -
GB/T 28181-2016客户端实现
2019-11-14 10:26:09目前通过测试工具,可以看到视频啦!下一步是进一步优化代码以及功能完善,留个截图纪念下