2019.11.12

您所在的位置:网站首页 大华摄像机用什么浏览器登陆的啊 2019.11.12

2019.11.12

2024-07-12 19:10| 来源: 网络整理| 查看: 265

大华摄像机SDK开发,预览实时视频并指定码流格式保存到文件中

由于本人最近在开发大华摄像机,特此分享一些经验给到各位开发朋友,本次实例是关于大华摄像机的实时预览视频码流保存到文件中的Demo,本人还开发过海康威斯的SDK,如果有需要的话看我前几篇文章下面附上链接,有问题留言看到一定会回复

以下为作者原创,如转载请告知,如不告知侵权必究 海康威视IPC二次开发SDK提取音频数据部分代码:https://blog.csdn.net/weixin_44232093/article/details/99406803

海康威视SDK二次开发通过云台参数设置控制摄像机的位置:https://blog.csdn.net/weixin_44232093/article/details/97649823

Java海康威视摄像头实时预览视频流保存到指定文件中: https://blog.csdn.net/weixin_44232093/article/details/96429942

1.开发环境

Windows10系统,64位大华摄像机SDK版本: JAVA_64位大华摄像机机芯一个,型号DH-CA-HZ2023UC开发软件,IDEA2 017导入大华SDKdemo的时候注意要把使用eclipse路径勾选上,不然引入包会报错 package main.java.com.netsdk.demo.frame; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import main.java.com.netsdk.common.Res; import main.java.com.netsdk.demo.module.LoginModule; import main.java.com.netsdk.lib.NetSDKLib; import main.java.com.netsdk.lib.ToolKits; import javax.swing.*; public class DaHuaCameraRealPlay { // 界面窗口 private static JFrame frame = new JFrame(); // 获取sdk实例 public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; // 设备信息 public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); // 登陆句柄 public static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0); /* * 初始化设备 * 登录设备 * */ public void startRealPlay(){ // 登录 DisConnect dis = new DisConnect(); // 调用INit初始化, 登录设备 LoginModule.init(dis, null); // 换成自己的设备信息即可 默认端口号37777 login("192.168.1.XXX",37777 ,"用户名" ,"密码" ); RealPlayByDataType(); } public void RealPlayByDataType() { // 创建Stin对象 设置码流格式 通道号 预览类型 用户数据 保存文件名称 NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE stIn = new NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE(); stIn.emDataType = NetSDKLib.EM_REAL_DATA_TYPE.EM_REAL_DATA_TYPE_GBPS; stIn.nChannelID = 0; stIn.rType = NetSDKLib.NET_RealPlayType.NET_RType_Realplay; stIn.dwUser = null; stIn.szSaveFileName = "D:\\DahuaResult\\result.flv"; // 转换后的裸H264码流文件名 // 创建Stout对象 NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE stOut = new NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE(); // 预览转码流保存 NetSDKLib.LLong lRealHandle = netsdk.CLIENT_RealPlayByDataType(m_hLoginHandle, stIn, stOut, 5000); if(lRealHandle.longValue() != 0) { System.out.println("RealPlayByDataType Succeed!"); } else { System.err.printf("RealPlayByDataType Failed!Last Error[0x%x]\n", netsdk.CLIENT_GetLastError()); return; } try { // 录像时间 单位毫秒 Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } // 停止预览 netsdk.CLIENT_StopRealPlay(lRealHandle); // 必须停止拉流后,才会生成文件 } public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { IntByReference nError = new IntByReference(0); m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError); if(m_hLoginHandle.longValue() == 0) { System.err.printf("Login Device[%s] Port[%d]Failed. %s\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint()); } else { System.out.println("Login Success [ " + m_strIp + " ]"); } return m_hLoginHandle.longValue() == 0? false:true; } /* * 断线提示参数 * */ private static class DisConnect implements NetSDKLib.fDisConnect { public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort); // 断线提示 SwingUtilities.invokeLater(new Runnable() { public void run() { frame.setTitle(Res.string().getRealplay() + " : " + Res.string().getDisConnectReconnecting()); } }); } } public static void main(String[] args) { DaHuaCameraRealPlay daHuaCamera = new DaHuaCameraRealPlay(); daHuaCamera.startRealPlay(); } }

如有问题请留言,看到必定回复,欢迎大家一起讨论,如有不足请指出



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3