海康网络摄像机调用SDK解码Java版

两个回调函数:

FRealDataCallBack 实现预览回调数据

DecCallBack    解码回调函数

在HCNetSDK.java补充相关函数和结构声明


//播放库函数声明,PlayCtrl.dll
interface PlayCtrl extends StdCallLibrary
{
PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("lib\\PlayCtrl", PlayCtrl.class);

public static final int STREAME_REALTIME = 0;
public static final int STREAME_FILE = 1;

// 20140501, [email protected], frame type
public static final int T_AUDIO16 = 101;
public static final int T_AUDIO8 = 100;
public static final int T_UYVY = 1;
public static final int T_YV12 = 3;
public static final int T_RGB32 = 7;

boolean PlayM4_GetPort(NativeLongByReference nPort);
boolean PlayM4_OpenStream(NativeLong nPort, ByteByReference pFileHeadBuf, int nSize, int nBufPoolSize);
boolean PlayM4_InputData(NativeLong nPort, ByteByReference pBuf, int nSize);
boolean PlayM4_CloseStream(NativeLong nPort);
boolean PlayM4_SetStreamOpenMode(NativeLong nPort, int nMode);
boolean PlayM4_Play(NativeLong nPort, HWND hWnd);
boolean PlayM4_Stop(NativeLong nPort);
boolean PlayM4_SetSecretKey(NativeLong nPort, NativeLong lKeyType, String pSecretKey, NativeLong lKeyLen);

// 20140501, [email protected]
boolean PlayM4_SetDecCallBack(NativeLong nPort, DecCallBack decCallBack);
boolean PlayM4_SetDecCallBackEx(NativeLong nPort, DecCallBack decCallBack, String pDest, NativeLong nDestSize);
public static interface DecCallBack extends StdCallCallback {
public void invoke(NativeLong nPort, ByteByReference pBuffer, NativeLong nSize, FRAME_INFO frameInfo, NativeLong nReserved1, NativeLong nReserved2);
}
public static class FRAME_INFO extends Structure {
public NativeLong nWidth; /* 画面宽,单位像素。如果是音频数据,则为音频声道数 */
public NativeLong nHeight; /* 画面高,单位像素。如果是音频数据,则为样位率 */
public NativeLong nStamp; /* 时标信息,单位毫秒 */
public NativeLong nType; /* 数据类型,T_AUDIO16, T_RGB32, T_YV12 */
public NativeLong nFrameRate; /* 编码时产生的图像帧率,如果是音频数据则为采样率 */
public int dwFrameNum; /* 帧号 */
}
}

解码显示和解码不显示可在下面段代码切换


//                 //设置解码回调函数 只解码不显示
// if (!playControl.PlayM4_SetDecCallBack(m_lPort.getValue(), decCallBack))
// {
// break;
// }

// 设置解码回调函数 解码且显示
if (!playControl.PlayM4_SetDecCallBackEx(m_lPort.getValue(), decCallBack, null, null))
{
break;
}

如果不显示的话,则不需要窗口句柄,这句可以去掉


W32API.HWND hwnd = new W32API.HWND(Native.getComponentPointer(panelRealplay));

然后再播放的时候第二个参数传null


                        if (!playControl.PlayM4_Play(m_lPort.getValue(), null)) //播放开始
{
break;
}

这样就可以做到只解码,不显示。

——————————————————————————————————————————————————

这样在回调函数中可以得到视音频数据,其中视频数据是YV12格式的,音频数据是PCM格式的。

参考了海康SDK——》Demo示例——》MFC分功能示例——》2-
实时流回调解码获取YUV,主要是DecCallBack_DemoDlg.cpp文件。

——————————————————————————————————————————————————

调用JavaCV对海康h.264视频流解码还没有成功。

海康网络摄像机调用SDK解码Java版,布布扣,bubuko.com

时间: 2024-12-24 09:28:19

海康网络摄像机调用SDK解码Java版的相关文章

(HK1-1)海康网络摄像机的使用

https://blog.csdn.net/u014552102/article/details/86700057 一.手机客户端操作:  首先在莹石商城官网https://www.ys7.com/下载“莹石云视频”手机客户端到手机安装.安装完成后,打开客户端,按照官方的摄像机操作说明书在手机端一步步进行操作如下所示:(这里必须将手机连接路由器的wifi,并确保手机和摄像机连接在相同的wifi环境中,并且由于是使用声波的方式连接wifi,在这个过程中,摄像机不能连接网线.下面的添加和配置操作都必

(HK1-2)海康相机直接连接电脑不经过路由器设置

解决电脑无法通过网线直连海康摄像机的问题 https://blog.csdn.net/u014552102/article/details/86708371 一.现象:    通过博主的另外一篇博客https://blog.csdn.net/u014552102/article/details/86700057,配置完海康网络摄像机后,摄像机可以通过路由器wifi传输视频声音,并通过手机客户端和电脑客户端播放监控画面了.但是当我们断掉摄像机和电脑的wifi,直接使用网线连接摄像机和电脑后,我们会

海康、大华网络摄像机RTSP URL格式组成及参数配置

经常有开发者咨询大牛直播SDK关于海康.大华网络摄像机RTSP url拼接规则和相关参数配置,虽然很简单,考虑到资料不全,写个博客记录下: 1. 海康摄像机:在IE浏览器输入网络摄像机的IP地址,输入配置的用户名.密码,登陆:视频: 码率类型:主码流和子码流,主码流支持的分辨率比较高: 视频类型:如果是音视频都需要,选择"复合流",如果只需要视频,选择"视频流": 分辨率设置,不再赘述: 码率类型:变码率!!!定码率的话,码率过高: 图像质量:酌情设置: 视频帧率:

C#制作ActiveX控件中调用海康SDK的问题

这个事情就是一个坑,耽误了两周时间,之前并没有做过ActiveX这玩意,现在客户需求如此,只能说是在网上看着教程做了. 事情是这样的,有一台海康威视的摄像头,客户需要一个ActiveX控件嵌入到网页中,通过点击按钮开始录制和结束录制来进行视频的录制和保存,关于海康摄像头的二次开发在此就不多说了,可以参考SDK中的说明. 直接上流程: 1.开发环境: VS2010,这个打包方便,之前用VS2013打包的,总是调用不了,不知道原因是什么:SDK是32位的,用64位的在Winform中可以正常使用,在

解码海康摄像机的录像 及 延时装载库

    使用海康的解码库playctrl.dll来解码海康的录像.下面的代码仅供参考.     下面的代码演示了这样一种机制:在多个工程中共享代码的时候,有的工程需要调用某些库,有的工程不需要,但是由于源代码互相引用导致即使用不到某个库的程序,也需要随同发布这个库,否则程序会在启动的时候报错找不到指定的库.     解决这个问题的方法之一是使用动态装载,用 LoadLibrary 动态装载库,用 GetProcAddress 获得要调用的函数的地址,用函数指针调用.但是这个方法比较麻烦.    

海康SDK编程指南(C#二次开发版本)

海康SDK编程指南 目前使用的海康SDK包括IPC_SDK(硬件设备),Plat_SDK(平台),其中两套SDK都需单独调用海康播放库PlayCtrl.dll来解码视频流,返回视频信息和角度信息.本文仅对视频监控常用功能的使用进行说明,其它未实现功能请参看设备网络SDK使用手册和播放库编程指南V7.2. IPC_SDK编程指南 (一)    SDK的引用 由于IPC_SDK没有SDK安装程序,所以需手工把下面图表中的DLL放入Debug或者Release文件夹的根目录下供程序调用,或者加入系统环

高清网络摄像机主流芯片方案之安霸、德仪和海思对比

(本文由四川艾普视达数码科技有限公司 苏彬.范清华 搜集整理) 高清网络视频监控发展到今天,市场也开始进入真正的高清时代,诸多有实力的高清摄像机厂家的产品线也逐渐完善起来,高清网络视频监控的配套产品有更加丰富和成熟.与此同时困扰很多人的高清网络摄像机与后端平台或者与后端NVR互联互通的问题也在逐渐迎刃而解,这得益于各个方案研发公司.生产厂家.平台商.标准协议组织都不遗余力的在网络摄像机协议对接这块投入了大量精力,使得高清网络摄像机与第三方设备或者软件平台的对接不再像早期那么尴尬.现阶段面向市场的

主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此同一时候困扰非常多人的高清网络摄像机与后端平台或者与后端NVR互联互通的问题也在逐渐迎刃而解,这得益于各个方案研发公司.生产厂家.平台商.标准协议组织都不遗余力的在网络摄像机协议对接这块投入了大量精力,使得高清网络摄像机与第三方设备或者软件平台的对接不再像早期那么尴尬.现阶段面向市场的高清推广商以及

java实现海康NVR/DVR设备工作状态获取

该功能需要到JNA的知识. 通过查阅海康设备网络SDK编程指南(DVR&NVR)可以知道海康SDK的调用方法都要同过如下过程: 虚线框的流程是可选部分,不会影响其他流程和模块的功能使用.具体的模块说明可以自行参考SDK开发文件. 主要功能代码: 测试例子,因此虚线部分功能不实现 1.初始化设备SDK:对整个网络SDK 系统的初始化,内存预分配等操作. 代码:HCNetSDK sdk = HCNetSDK.INSTANCE;    sdk.NET_DVR_Init();//返回booleaan值