利用海康威視sdk 預覽攝像機
阿新 • • 發佈:2019-02-13
using PreviewDemo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication26
{
public partial class Form1 : Form
{
private bool m_bInitSDK = false;
public CHCNetSDK.NET_DVR_DEVICEINFO_V30 m_struDeviceInfo;
private IntPtr m_ptrRealHandle;
private CHCNetSDK.REALDATACALLBACK m_fRealData = null;
private Int32 m_lRealHandle = -1;
public Int32 m_lUserID = -1;
public Form1()
{
InitializeComponent();
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
ConsoleEx.AllocConsole();//開啟控制檯
Console.Write(m_bInitSDK);
if (m_bInitSDK == false)
{
MessageBox.Show("NET_DVR_Init error!");
return;
}
else
{
//儲存SDK日誌 To save the SDK log
CHCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);
}
}
private void b_Click(object sender, EventArgs e)
{
CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
lpClientInfo.lChannel = 1;
lpClientInfo.lLinkMode = 0x0000;
lpClientInfo.sMultiCastIP = "";
lpClientInfo.hPlayWnd = p.Handle;
m_ptrRealHandle = p.Handle;
m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
IntPtr pUser = new IntPtr();
m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null/*m_fRealData*/, pUser, 1);
if (m_lRealHandle == -1)
{
uint nError = CHCNetSDK.NET_DVR_GetLastError();
return;
}
}
private void btnLogin_Click(object sender, System.EventArgs e)
{
string DVRIPAddress = "192.168.1.62";
Int16 DVRPortNumber = Int16.Parse("8000");
string DVRUserName = "admin";
string DVRPassword = "admin12345";
m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
if (m_lUserID == -1)
{
MessageBox.Show("login error!");
return;
}
else
{
MessageBox.Show("Login Success!");
}
}
public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
{
// MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
// switch (dwDataType)
// {
// case CHCNetSDK.NET_DVR_SYSHEAD: // sys head
// if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
// {
// MessageBox.Show("Get Port Fail");
// }
// if (dwBufSize > 0)
// {
// //set as stream mode, real-time stream under preview
// if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
// }
// //start player
// if (!PlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024))
// {
// m_lPort = -1;
// this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
// break;
// }
//set soft decode display callback function to capture
// m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
// if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
// }
//start play, set play window
// this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");
// if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
// {
// m_lPort = -1;
// this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
// break;
// }
//set frame buffer number
// if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
// }
//set display mode
// if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/))//play off screen // todo!!!
// {
// this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
// }
// }
// break;
// case CHCNetSDK.NET_DVR_STREAMDATA: // video stream data
// if (dwBufSize > 0 && m_lPort != -1)
// {
// if (!PlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize))
// {
// this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
// }
// }
// break;
// case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA: // Audio Stream Data
// if (dwBufSize > 0 && m_lPort != -1)
// {
// if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
// }
// }
// break;
// default:
// break;
// } */
}
}
public class ConsoleEx
{
/// <summary>
/// 啟動控制檯
/// </summary>
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
/// <summary>
/// 釋放控制檯
/// </summary>
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication26
{
public partial class Form1 : Form
{
private bool m_bInitSDK = false;
public CHCNetSDK.NET_DVR_DEVICEINFO_V30 m_struDeviceInfo;
private IntPtr m_ptrRealHandle;
private CHCNetSDK.REALDATACALLBACK m_fRealData = null;
private Int32 m_lRealHandle = -1;
public Int32 m_lUserID = -1;
public Form1()
{
InitializeComponent();
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
ConsoleEx.AllocConsole();//開啟控制檯
Console.Write(m_bInitSDK);
if (m_bInitSDK == false)
{
MessageBox.Show("NET_DVR_Init error!");
return;
}
else
{
//儲存SDK日誌 To save the SDK log
CHCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);
}
}
private void b_Click(object sender, EventArgs e)
{
CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
lpClientInfo.lChannel = 1;
lpClientInfo.lLinkMode = 0x0000;
lpClientInfo.sMultiCastIP = "";
lpClientInfo.hPlayWnd = p.Handle;
m_ptrRealHandle = p.Handle;
m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
IntPtr pUser = new IntPtr();
m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null/*m_fRealData*/, pUser, 1);
if (m_lRealHandle == -1)
{
uint nError = CHCNetSDK.NET_DVR_GetLastError();
return;
}
}
private void btnLogin_Click(object sender, System.EventArgs e)
{
string DVRIPAddress = "192.168.1.62";
Int16 DVRPortNumber = Int16.Parse("8000");
string DVRUserName = "admin";
string DVRPassword = "admin12345";
m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
if (m_lUserID == -1)
{
MessageBox.Show("login error!");
return;
}
else
{
MessageBox.Show("Login Success!");
}
}
public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
{
// MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
// switch (dwDataType)
// {
// case CHCNetSDK.NET_DVR_SYSHEAD: // sys head
// if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
// {
// MessageBox.Show("Get Port Fail");
// }
// if (dwBufSize > 0)
// {
// //set as stream mode, real-time stream under preview
// if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
// }
// //start player
// if (!PlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024))
// {
// m_lPort = -1;
// this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
// break;
// }
//set soft decode display callback function to capture
// m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
// if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
// }
//start play, set play window
// this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");
// if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
// {
// m_lPort = -1;
// this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
// break;
// }
//set frame buffer number
// if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
// }
//set display mode
// if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/))//play off screen // todo!!!
// {
// this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
// }
// }
// break;
// case CHCNetSDK.NET_DVR_STREAMDATA: // video stream data
// if (dwBufSize > 0 && m_lPort != -1)
// {
// if (!PlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize))
// {
// this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
// }
// }
// break;
// case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA: // Audio Stream Data
// if (dwBufSize > 0 && m_lPort != -1)
// {
// if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize))
// {
// this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
// }
// }
// break;
// default:
// break;
// } */
}
}
public class ConsoleEx
{
/// <summary>
/// 啟動控制檯
/// </summary>
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
/// <summary>
/// 釋放控制檯
/// </summary>
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
}
}