海康摄像头视频调用出错,Jni Error(app bug): accessed stale local reference解决办法

2023-11-09

项目中要在Android手机中调用海康摄像头拍摄的画面,在公司网管配置好了网络地址(不要与其他局域网内地址冲突)和端口,并激活摄像头设备后,通过SADPTool(海康提供的摄像头搜索工具)可以自动检索到当前局域网内已激活的设备,通过设备列表中双击设备所在IP(即网管之前配置的IP),输入默认的用户名和密码(admin、111)进入设备管理界面,即可在PC端(浏览器中)看到摄像头拍摄的画面。至此,准备工作已完成,可以开始在APP中接入SDK。

 

笔者在网上找了一个集成了SDK的APP demo 源码,运行后正确设置了配置信息,也可以在手机上看到。该demo在以下资源3中可下载,主要给读者对比是否是读者正在使用的出错的demo。

 

资源下载地址:

1、SADPTool:(0积分)

http://download.csdn.net/detail/daijin888888/9258643

2、截止此博文发表前最新SDK包: (0积分,也可在官网的开发平台萤石开放平台下载最新包,需要注册开发者账号:https://open.ys7.com/sdk.html)

http://download.csdn.net/detail/daijin888888/9258673

3、网上找的集成过SDK的APP demo:(0积分,独立运行正常,但移植后报错)

http://download.csdn.net/detail/daijin888888/9258665

4、经过笔者更新SDK后的APP:(0积分,可直接下载使用,在3的基础上修改)

http://download.csdn.net/detail/daijin888888/9258633

GitHub(给个星杯~):https://github.com/VingeDai/HIKVISIONMonitor

3中的demo可以正常运行,但是移植到我的项目中就会报错,如下:

经多次尝试测试,发现是SDK版本问题

解决办法:更换新的SDK。将以上资源3中的HCNetSDK.jar和PlayerSDK.jar移除,并导入以上资源2中的ezviz-openapi-android-sdk.jar和armeabi中的所有.so文件,此时会有一个方法报错:

 

//抓图回调函数
PlayerDisplayCB displayCB = new PlayerDisplayCB() {
       @Override
     public void onDisplay(int arg0, ByteBuffer arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) {
            if (null != context) {
                   context.sendBroadcast(new Intent(ACTION_START_RENDERING));
            } else {
                    Log.e(TAG, "Context为空!没有setContext(Context context)?");
            }
                    Log.d(TAG, "开始画面渲染");
            if (Player.getInstance().setDisplayCB(m_iPort, null)) {
                   Log.i(TAG, "移除显示回调成功!");
          } else {
                    Log.e(TAG, "移除显示回调失败!");
            }
          }
};

 因为这个回调函数在新版本中被改写了,开发者只需重写新的onDisplay方法,并将旧的onDisplay方法体中的内容移动到新方法中,删掉旧onDisplay方法即可。

 

更改后:

 

//抓图回调函数
PlayerDisplayCB displayCB = new PlayerDisplayCB() {
	@Override
	public void onDisplay(int arg0, byte[] arg1,
			int arg2, int arg3, int arg4, int arg5,
				int arg6, int arg7) {
		if (null != context) {
                       context.sendBroadcast(new Intent(ACTION_START_RENDERING));
                    } else {
                       Log.e(TAG, "Context为空!没有setContext(Context context)?");
                     }
                       Log.d(TAG, "开始画面渲染");
                     if (Player.getInstance().setDisplayCB(m_iPort, null)) {
                       Log.i(TAG, "移除显示回调成功!");
                     } else {
                       Log.e(TAG, "移除显示回调失败!");
                     }					
		}
};

重新运行项目,即可成功获取画面。

 

 

修改后的demo见以上下载资源4。

 

请尊重原创,转载请注明出处:

http://blog.csdn.net/daijin888888/article/details/49763161

 

 

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

海康摄像头视频调用出错,Jni Error(app bug): accessed stale local reference解决办法 的相关文章

随机推荐

  • 离散数学期末复习—学习笔记

    主要是看ppt和做课后练习 数理逻辑 1 命题逻辑的基本概念 1 1 命题与连接词 1 2 命题公式及其赋值 1 3 习题 2 命题逻辑等值演算 2 1等值式 基本等值式 16组 24个公式 2 2 析取范式和合取范式 主要是主析取范式和主
  • kettle入门教程

    目录 1 kettle叙述 1 1什么是kettle 1 2kettle工程存储方式 1 3kettle两种设计 1 4kettle的组成 1 5kettle的下载安装 2 kettle教程 2 1转换 2 1 1普通转换 2 1 2执行s
  • html中div hover的用法,CSS: hover选择器的使用详解

    有些时候需要用到mouseover和mouseout这两个鼠标事件 但是写js又比较麻烦 还要添加监听事件 所以能用css解决的东西尽量yongcss解决 这样可以提高性能 下面说一下我对 hover 的了解 之前在学计算机应用的时候 老师
  • Windows端pytorch镜像快速安装【清华源】

    目录 0 说在前面 1 安装Anacoda 1 1 说在前面 1 2 下载 1 3 安装 1 4 记住3条命令 2 安装CUDA 2 1 更新NVIDIA驱动 2 2 下载CUDA 3 安装cudnn 3 1 下载安装 4 安装pytorc
  • MySQL必知必会 学习笔记 第七章 数据过滤

    可用AND操作符给WHERE子句附加条件 SELECT columnName FROM tableName WHERE columnName1 1 AND columnName2 2 OR操作符指示MySQL匹配符合操作符任一端条件的行 S
  • 监听器

    监听器在JavaWeb开发中用得比较多 下面说一下监听器 Listener 在开发中的常见应用 一 统计当前在线人数 在JavaWeb应用开发中 有时候我们需要统计当前在线的用户数 此时就可以使用监听器技术来实现这个功能了 1 packag
  • vue3 在原型上挂载方法

    在vue3 中没有 this 不在是实例化查出来的vue对象 那怎么往原型挂在公用的方法呢 const app createApp App const test gt console log 我是测试函数触发的 return 测试成功 ap
  • nginx第三方模块---nginx-sticky-module的平滑升级

    nginx第三方模块 nginx sticky module的平滑升级 第一步 下载 下载地址 链接 https bitbucket org nginx goodies nginx sticky module ng downloads ta
  • 5个方面详解:AI产品运营必知的软硬件技术

    比算法更难得是算法的思想 比编程工具更难的是编程的思维 比做产品更难的是产品的梦想 本文主要从5个方面 详细阐述AI产品运营必知的软硬件技术 一 AI产品运营对基础关系的安排 1 智能软硬件与软件和硬件 在AI产品里没有纯粹单独的软件和硬件
  • 【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务

    SpringBoot应用篇 SpringBoot集成MinIO对象存储服务 对象存储服务MinIO MinIO简介 MinIO特点 开箱使用 docker安装启动 管理控制台 快速入门 Java 上传文件到minio 配置访问权限 封装Mi
  • 计算机基础知识深入研究系列:定点数与浮点数

    插眼 总结 暂无 自己还没深入研究 留链接供以后参考 深入浅出浮点数 https blog csdn net cppptr article details 573372 硬件中的定点数与浮点数运算与相互转换 https blog csdn
  • Qt 官方资源下载地址

    1 所有Qt版本下载地址 http download qt io archive qt 2 所有Qt Creator下载地址 http download qt io archive qtcreator 3 所有Qt VS开发插件下载地址 h
  • CubeMX——F1和G0系列外部中断回调函数差异

    以前写代码 一些固定的代码总喜欢复制粘贴 然后在G0系列使用外部中断的时候 发现死活触发不了 一路检查了CubeMX的配置以及硬件连接 均发现没问题 然后发现G0系列的外部中断回调函数和F1系列的不一样 以下列举的是配置下降沿触发模式 主要
  • 怎么给input插入一个图片

    html部分
  • 强化学习笔记:连续控制 & 确定策略梯度DPG

    1 离散控制与连续控制 之前的无论是DQN Q learning A2C REINFORCEMENT SARSA什么的 都是针对离散动作空间 不能直接解决连续控制问题 考虑这样一个问题 我们需要控制一只机械手臂 完成某些任务 获取奖励 机械
  • C++生成随机字符串的程序

    include
  • set-cookie失效之坑

    最近做的一个微信公众号项目 打开网页登录的时候就会出现每次请求sessionid不一致的问题 先贴图 session是后台生成的 由于验证码信息是放了在session里面 每次的session不一致 导致没有办法从session里面拿到响应
  • springmvc整合freemarker以及前端的一些坑

    一 SpringMVC整合freemarker配置 1 引入相关jar包 html view plain copy
  • 【LVGL】ANIM(动画)学习

    animate 通用动画 过渡动画与通用动画的区别 过渡动画只有在状态发生改变时发生 通用动画可以在任意时刻进行 过渡动画支是样式 style 的一部分 通用动画和样式是相互独立的 实际上 过渡的底层也使用的是动画 创建动画 为了创建动画
  • 海康摄像头视频调用出错,Jni Error(app bug): accessed stale local reference解决办法

    项目中要在Android手机中调用海康摄像头拍摄的画面 在公司网管配置好了网络地址 不要与其他局域网内地址冲突 和端口 并激活摄像头设备后 通过SADPTool 海康提供的摄像头搜索工具 可以自动检索到当前局域网内已激活的设备 通过设备列表