海康威视官网下载最新版本设备网络SDK:海康开放平台 (hikvision.com)
下载好SDK后,将需要的DLL导入到Unity的Plugins文件夹内
还有案例里的CHCNetSDK脚本导入Unity内
新建物体挂载脚本,下面是脚本
using UnityEngine;
using System.Collections;
using System;
using UnityEngine.UI;
using System.Threading;
using System.Runtime.InteropServices;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
//Frame Info
public struct Frame_Info
{
public int nWidth;
public int nHeight;
public int nStamp;
public int nType;
public int nFrameRate;
public uint dwFrameNum;
public void Init()
{
nWidth = 0;
nHeight = 0;
nStamp = 0;
nType = 0;
nFrameRate = 0;
dwFrameNum = 0;
}
}
public class HIKCamera : MonoBehaviour
{
// add by gb 080131 version 4.9.0.1
[DllImport("PlayCtrl")]
public static extern bool PlayM4_GetPort(ref int nPort);
[DllImport("PlayCtrl")]
public static extern uint PlayM4_GetLastError(int nPort);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_SetStreamOpenMode(int nPort, uint nMode);
//Stream type
public const int STREAME_REALTIME = 0;
public const int STREAME_FILE = 1;
[DllImport("PlayCtrl")]
public static extern bool PlayM4_OpenStream(int nPort, IntPtr pFileHeadBuf, uint nSize, uint nBufPoolSize);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_SetDisplayBuf(int nPort, uint nNum);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_SetOverlayMode(int nPort, int bOverlay, uint colorKey);
public delegate void DECCBFUN(int nPort, IntPtr pBuf, int nSize, ref Frame_Info pFrameInfo, int nReserved1, int nReserved2);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_SetDecCallBackEx(int nPort, DECCBFUN DecCBFun, IntPtr pDest, int nDestSize);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_Play(int nPort, IntPtr hWnd);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_InputData(int nPort, IntPtr pBuf, uint nSize);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_SetDecCallBack(int nPort, DECCBFUN DecCBFun);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_Stop(int nPort);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_CloseStream(int nPort);
[DllImport("PlayCtrl")]
public static extern bool PlayM4_FreePort(int nPort);
private bool m_bInitSDK = false;
private bool m_bRecord = false;
private uint iLastErr = 0;
public Int32 m_lUserID = -1;
private Int32 m_lRealHandle = -1;
private string str;
private Int32 m_lPort = -1;
private IntPtr m_ptrRealHandle;
private CHCNetSDK.REALDATACALLBACK RealData = null;
public CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo;
public CHCNetSDK.NET_DVR_IPPARACFG_V40 m_struIpParaCfgV40;
public CHCNetSDK.NET_DVR_STREAM_MODE m_struStreamMode;
public CHCNetSDK.NET_DVR_IPCHANINFO m_struChanInfo;
public CHCNetSDK.NET_DVR_IPCHANINFO_V40 m_struChanInfoV40;
private DECCBFUN m_fDisplayFun = null;
int width = 3840;//视屏的宽
int height = 2160;//视屏的高
public bool isPlaying;
void Start()
{
InitSDK();
}
/// <summary>
/// 初始化,一次就行(初始化->登录->获取视屏流)
/// </summary>
private void InitSDK()
{
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
if (m_bInitSDK == false)
{
Debug.LogError("初始化失败");
return;
}
else
{
//保存SDK日志 To save the SDK log
CHCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);
Debug.Log("初始化成功");
Login("192.168.1.64", "8000", "admin", "你的密码");
}
}
/// <su