折腾了一个多月,终于调出来了。。。。。首先吐槽一下海康SDK,同时也感谢之。。。

手头有个项目,需要实时抓取海康摄像头,我是在Android下实现的,海康官网上没有Android
SDK,这里友情提醒一下,大家在官网上给海康一个电话就搞定了的。。。我手头有,但既然海康不放网页上,要让自己索取,那我也就不乱上传了,尊重海康
吧。。。反正一个400 ,约2个小时就由到邮件了的。。。

收到SDK后,里面有个Demo,我直接运行Demo是没有问题的,可以在Android下实时预览摄像头,但我需要把实时画面抓取下来传给
OpenCV库,进行后期的图像分析,提供的SDK里面有抓取Bmp、JPEG函数,但是确实如网友说的有延迟,得用方法二(下面附了相关网址,大家详细
可以自己看,我也是参考了它的):http://blog.csdn.net/wanghuiqi2008/article/details/31404571
思路是在RealPlayCallBack中设置DecodeCB解码回调函数,然后在DecodeCB解码回调函数中进行抓图处理,比如把图像数据保存
到二进制文件中,然后就可以播放了。。。这里Decode得到的图像是YV12数据,我的需求是把它转换成RGB,反正都好办了。。。。DecodeCB
函数的说明大家可以看看:

根据上面的说明,很简单了。。。。。但是、但是、但是……坑爹的事来了,我折腾了一个月,总以为自己的程序出错,反复检查DecodeCB回调的第
二个参数“byte[] data“这个图像数组有几十万个元素,但每个元素都是0……也就是说回调里面实际上是没有数据的。。。。

而同时,海康的SDK说明又太”简扼明要“,百度、Google也找不到相关说法,最后我只有给海康SDK发邮件咨询了(就是直接回复给发SDK给
我那个邮箱)。报着尝试的心理(因为有加了几个海康开发群,都说电话不接、邮件不回),居然很快就回复了,经过多次沟通,他给我发了两次SDK更新文件
(要替换so文件)。历经千辛万苦,终于有数据了,然后我无论是Save成YUV文件、转码成RGB都OK了。。。

所以一开始我说,吐槽海康,M的提供个SDK居然不测试么?但是SDK_Support这邮箱还是回复很神速的,所以我也很感谢之。。。

最后可能会有朋友想跟我要SDK开发包,我还是不传了,我也不知海康为何不直接在网站上提供Android的SDK,大家就麻烦一下,去个电话吧,只是会让你报一个单位名称,很简单的。

Android下海康实时视频解码的更多相关文章

  1. Android海康监控视频调用demo

    一. 开发环境 1. 操作系统:windows7(X64) 2. 开发工具:eclipse adt Build: v22.2.1-833290 JDK7 android SDK 3. 客户端设备版本: ...

  2. android 移动网络实时抓包

    2G.3G环境,那就必须root进去tcpdump 方式抓. 准备: 一.root CF-auto-root: http://autoroot.chainfire.eu/ 需要清理全部数据,注意备份 ...

  3. 用ADB(Android Debug Bridge)实时监测Android程序的运行

      监控Android设备上程序的运行,需要ADB的配合,具体ADB工具的介绍以及命令选项可见博客: http://blog.csdn.net/mliubing2532/article/details ...

  4. Java实现Android,iOS设备实时监控

    Java实现Android设备实时监控 设计思路: 第一,启动一个实时截图线程,负责实时截取Android设备屏幕,保存到本地路径. 第二,在JSP页面,定义一个img对象,实时更换img对象的src ...

  5. 基于Socket的Android手机视频实时传输

    首先,简单介绍一下原理.主要是在手机客户端 (Android)通过实现Camera.PreviewCallback接口,在其onPreviewFrame重载函数里面获取摄像头当前图像数据, 然后通过S ...

  6. Android平台Camera实时滤镜实现方法探讨(三)--通过Shader实现YUV转换RBG

    http://blog.csdn.net/oshunz/article/details/50055057 文章例如该链接通过将YUV分成三个纹理,在shader中取出并且经过公式变换,转换成RGB.我 ...

  7. 在Android中使用实时调度(real-time)

    Linux的线程调度策略中有FIFO和RT的实时调度方法,但是在Android中做了限制,普通用户不能修改线程的调度算法为FIFO和RT,必须ROOT用户才能更改.但问题是程序是以普通用户启动和运行的 ...

  8. android studio学习---实时布局(Live Layout)

    Android Studio中的实时布局功能允许大家在无需将应用程序运行在设备或者模拟器中的前提下,直接预览应用的用户界面.实时布局是一款极为强大的工具,能够帮助开发者节约大量时间.在实时布局的帮助下 ...

  9. android 入门-Service实时向Activity通过BroadcastReceiver传递数据

    引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...

随机推荐

  1. QlikView ETL - 分隔字符串的方法 SubField

    开篇介绍 今天在使用 QV 加载数据的时候会碰到列中的一些状态,信息是通过:或者 / 等符号分隔的,这样不利于做数据分析,因为字符串中的内容本身就是维度.上网搜了一下找到了解决的方法,记录一下. 比如 ...

  2. 微软BI 之SSIS 系列 - 再谈Lookup 缓存

    开篇介绍 关于 Lookup 的缓存其实在之前的一篇文章中已经提到了 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache ...

  3. [ucgui] 对话框8——Framewin小工具

    >_<" 这里主要是窗口小工具Framewin的用法介绍,包括创建背景窗口及其消息回调函数,创建Frame窗口并设置其回调函数,这里一些其他的功能被我注释掉了,有向状态栏添加最大 ...

  4. 如何真正重写window对象的方法

    重写window对象的方法不是一件新奇的事,比如我们可能需要改变默认alert的行为,如何安全的重写呢? 小菜看到某知名IT网站是这样的写法: window.alert = function(){}; ...

  5. Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)

    Vue.js双向绑定的实现原理 解析 神奇的 Object.defineProperty 这个方法了不起啊..vue.js和avalon.js 都是通过它实现双向绑定的..而且Object.obser ...

  6. asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL

    代码: /// <summary> /// HTML Table表格数据(html)导出EXCEL /// </summary> /// <param name=&quo ...

  7. 更改Linux默认栈空间的大小

    有时候在Linux写C++程序处理大量的数据,程序内部需要分配很大的数组来存放一些数据,但有时候分配的数组太大的话运行时会出现段错误.这种情况可能是分配的数组大小超过了Linux系统的默认栈空间的大小 ...

  8. php 3种常见设计模式

    1.工厂模式 <?php namespace Facebab; class Factory { static function createDatabase () { return new Da ...

  9. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...

  10. Linux Buffers和Cached的区别(转)

    在linux下使用free命令查看内存使用情况,有buffers和cached两项,以下是它们的区别: buffers是为块设备设计的缓冲.比如磁盘读写,把分散的写操作集中进行,减少磁盘I/O,从而提 ...