//获取视频参数 public Int32 GetVideoParams(ref Int32 _iBri, ref Int32 _iCon, ref Int32 _iSat, ref Int32 _iHue) { Int32 iRet = -1; if (m_lHandle != -1) { DefVsClient.PARAM_SET_DATA ParamSetData = new DefVsClient.PARAM_SET_DATA(); DefVsClient.CHANNEL_CONINFOR sChConInfor = GetChConInfor(); ParamSetData.m_sNetLinkInfo = sChConInfor.m_sNetLinkInfo; ParamSetData.m_iChNo = sChConInfor.m_iChNo; ParamSetData.m_iCommand = (Int32)ParamCmdType.cmdViParam; ParamSetData.m_iPriority = 1; iRet = VsClientAPI.VSSP_ClientGetDevParam(ref ParamSetData); if (iRet == 0) { byte[] byteArray = ParamSetData.m_pchParams; _iBri = byteArray[0]; _iCon = byteArray[1]; _iSat = byteArray[2]; _iHue = byteArray[3]; } else { _iBri = 0; _iCon = 0; _iSat = 0; _iHue = 0; } } return(iRet); }
public void ChangeHandle(int iHandle, IntPtr Oldhandle, int iType) { m_iType = iType; this.m_iHandle = iHandle; this.m_pOldHandle = Oldhandle; VsClientAPI.VSSP_ClientSetPlayHwnd(m_iHandle, PanelFull.Handle); }
/// <summary> /// 控制前端设备 /// </summary> /// <param name="_iCommond">控制命令</param> /// <param name="_iValue">速度值</param> /// <param name="_iPriority">控制优先级</param> /// <returns>成功返回 0 失败返回 -1</returns> public Int32 PTZCtrl(Int32 _iCommond, Int32 _iValue, Int32 _iPriority) { Int32 iRet = -1; DefVsClient.CHANNEL_CONINFOR sChConInfor = new DefVsClient.CHANNEL_CONINFOR(); sChConInfor.m_sNetLinkInfo.m_pchFromID = Encoding.Default.GetBytes("900000000001"); sChConInfor.m_sNetLinkInfo.m_pchToID = Encoding.Default.GetBytes(m_strDevId + "000"); byte[] temp = null; byte[] bUser = new byte[12]; Array.Clear(bUser, 0, 12); temp = Encoding.Default.GetBytes("888888"); Array.Copy(temp, bUser, temp.Length); sChConInfor.m_sNetLinkInfo.m_pchUser = bUser; byte[] bPass = new byte[12]; Array.Clear(bPass, 0, 12); temp = Encoding.Default.GetBytes("888888"); Array.Copy(temp, bPass, temp.Length); sChConInfor.m_sNetLinkInfo.m_pchPsw = bPass; sChConInfor.m_sNetLinkInfo.m_iTranType = 1; byte[] bUrl = new byte[20]; Array.Clear(bUrl, 0, 20); temp = Encoding.Default.GetBytes(m_strMMIp); Array.Copy(temp, bUrl, temp.Length); sChConInfor.m_sNetLinkInfo.m_pchUrl = bUrl; sChConInfor.m_sNetLinkInfo.m_iPort = 3004; sChConInfor.m_iType = 0x0201018; sChConInfor.m_iChNo = 0; sChConInfor.m_iBuffNum = 50; iRet = VsClientAPI.VSSP_ClientPTZCtrl(ref sChConInfor.m_sNetLinkInfo, sChConInfor.m_iChNo, _iCommond, _iValue, _iPriority, /*m_iExclusivedTime*/ 10); return(iRet); }
/// <summary> /// 连接视频 /// </summary> public Int32 ConnectVideo(IntPtr _hWnd) { m_lHandle = -1; m_bRecording = false; m_bConnected = false; m_sChConInfor = new DefVsClient.CHANNEL_CONINFOR(); m_sChConInfor.m_sNetLinkInfo.m_pchFromID = Encoding.Default.GetBytes("900000000001"); m_sChConInfor.m_sNetLinkInfo.m_pchToID = Encoding.Default.GetBytes(m_strDevId + "000"); byte[] temp = null; byte[] bUser = new byte[12]; Array.Clear(bUser, 0, 12); temp = Encoding.Default.GetBytes("888888"); Array.Copy(temp, bUser, temp.Length); m_sChConInfor.m_sNetLinkInfo.m_pchUser = bUser; byte[] bPass = new byte[12]; Array.Clear(bPass, 0, 12); temp = Encoding.Default.GetBytes("888888"); Array.Copy(temp, bPass, temp.Length); m_sChConInfor.m_sNetLinkInfo.m_pchPsw = bPass; m_sChConInfor.m_sNetLinkInfo.m_iTranType = 1; byte[] bUrl = new byte[20]; Array.Clear(bUrl, 0, 20); temp = Encoding.Default.GetBytes(m_strMMIp); Array.Copy(temp, bUrl, temp.Length); m_sChConInfor.m_sNetLinkInfo.m_pchUrl = bUrl; m_sChConInfor.m_sNetLinkInfo.m_iPort = 3000; m_sChConInfor.m_iType = 0x0201018; m_sChConInfor.m_hVideo = _hWnd; m_sChConInfor.m_iChNo = 0; m_sChConInfor.m_iBuffNum = 50; m_lHandle = VsClientAPI.VSSP_ClientStart(ref m_sChConInfor); CloseAudio(); return(m_lHandle); }
// 控制前端设备 public Int32 PTZCtrl(Int32 _iCommond, Int32 _iValue, Int32 _iPriority) { Int32 iRet = -1; DefVsClient.CHANNEL_CONINFOR sChConInfor = GetChConInfor(); iRet = VsClientAPI.VSSP_ClientPTZCtrl(ref sChConInfor.m_sNetLinkInfo, sChConInfor.m_iChNo, _iCommond, _iValue, _iPriority, /*m_iExclusivedTime*/ 10); return(iRet); }
/// <summary> /// 停止播放 /// </summary> public void StopPlay() { VsClientAPI.VSSP_ClientStopPlay(m_lHandle); m_strId = ""; m_strSvrIp = ""; m_lHandle = -1; m_CapPath = ""; }
//断开视频 public void DisConnectVideo() { if (m_iPlayHandle != -1) { VsClientAPI.VSSP_ClientStop(m_iPlayHandle); } m_iPlayHandle = -1; }
/// <summary> /// 更改视频主显示区 /// </summary> public Int32 ShowVideo(IntPtr _hWnd) { Int32 iRet = -1; if (m_lHandle != -1) { iRet = VsClientAPI.VSSP_ClientSetWnd(m_lHandle, _hWnd, true); } return(iRet); }
/// <summary> /// 关闭音频 /// </summary> public Int32 CloseAudio() { Int32 iRet = -1; if (m_lHandle != -1) { iRet = VsClientAPI.VSSP_ClientStopAudio(m_lHandle); } return(iRet); }
/// <summary> /// 抓拍图片 /// </summary> /// <param name="_strFilePath">保存路径</param> /// <returns></returns> public Int32 CaptureBmp(string _strFilePath) { Int32 iRet = -1; if (m_lHandle != -1) { iRet = VsClientAPI.VSSP_ClientBmpCap(m_lHandle, _strFilePath); } return(iRet); }
/// <summary> /// 设置音量 /// </summary> public Int32 SetAudioVolume(UInt32 _uVolume) { Int32 iRet = -1; if (m_lHandle != -1) { iRet = VsClientAPI.VSSP_ClientAudioVolum(m_lHandle, _uVolume); m_iVolume = _uVolume; } return(iRet); }
/// <summary> /// 自己api连接视频 /// </summary> /// <param name="strId">登录摄像机id</param> /// <param name="strIp">登录摄像机ip</param> /// <param name="strName">登录摄像机名称</param> public void ConnectVideoSelf(string strId, string strIp, string strName) { m_strName = strName; m_strCamId = strId; m_strSvrIp = strIp; DefVsClient.CHANNEL_CONINFOR sChConInfor = GetChConInfor(); m_lPlayHandle = VsClientAPI.VSSP_ClientStart(ref sChConInfor); if (m_lPlayHandle >= 0) { m_bConnected = true; } }
/// <summary> /// 播放视频 /// </summary> /// <param name="_pchUrl">摄像机ip</param> /// <param name="_startTime">开始时间</param> /// <param name="_endTime">结束时间</param> /// <param name="_playTime">播放时间</param> /// <param name="_pchCamId">摄像机id</param> public void StartPlay(byte[] _pchUrl, DefVsClient.PLAY_NETTIME _startTime, DefVsClient.PLAY_NETTIME _endTime, DefVsClient.PLAY_NETTIME _playTime, string _pchCamId) { m_strId = _pchCamId; m_strSvrIp = System.Text.Encoding.Default.GetString(_pchUrl); string sUser = "******"; string sPass = "******"; byte[] byUser = System.Text.Encoding.Default.GetBytes(sUser); byte[] byPass = System.Text.Encoding.Default.GetBytes(sPass); m_lHandle = VsClientAPI.VSSP_ClientPlayByTime(_pchUrl, byUser, byPass, _startTime, _endTime, _playTime, _pchCamId, ucSinglePanle.Handle, 4002); m_bIsConnect = true; }
//开始录像 public Int32 StartRecFile(string _strFilePath) { Int32 iRet = -1; if (m_lHandle != -1) { iRet = VsClientAPI.VSSP_ClientStartRecord(m_lHandle, _strFilePath); if (iRet == 0) { m_bRecording = true; } } return(iRet); }
//停止录像 public Int32 StopRecFile() { Int32 iRet = -1; if (m_lHandle != -1 && m_bRecording == true) { iRet = VsClientAPI.VSSP_ClientStopRecord(m_lHandle); if (iRet == 0) { m_bRecording = false; } } return(iRet); }
/*******************************************************/ /// <summary> /// 读取配合文件ini的回调函数 /// </summary> /// <param name="_sCallBackData">读取的key值和value(json字符串)</param> public void ReadIniCallBack(string _sCallBackData) { JObject jObject = JObject.Parse(_sCallBackData); if (jObject.Count > 0) { foreach (var Obj in jObject) { //读取的抓拍路径 if (Obj.Key == "CapPicPath") { JToken jToken = Obj.Value; m_sCapPicPath = jToken.Value <string>(); if (m_sCapPicPath != "") { ucVGSHow.SetCapturePath(m_sCapPicPath, true); } } //读取的VsClient.dll的路径,并初始化动态库 else if (Obj.Key == "VsClientPath") { JToken jToken = Obj.Value; m_sVsClientPath = jToken.Value <string>(); if (m_sVsClientPath != "") { if (!m_bIsInitSelfSucc) { //加载自己的api库 if (VsClientAPI.LoadVsClientAPI(m_sVsClientPath)) { VsClientAPI.VSSP_ClientStartup(DefIcomClient.WM_VSCLIENT_DLL_MSG, this.Handle, m_MsgCallBack); VsClientAPI.VSSP_ClientWaitTime(2, 2); m_bIsInitSelfSucc = true; } } } } //读取HCNetSDK.dll的路径,并初始化动态库 else if (Obj.Key == "HikSDKPath") { JToken jToken = Obj.Value; m_sHCNetSDKPath = jToken.Value <string>(); //设置海康的环境变量 //string sPath = m_sHCNetSDKPath.Replace("\\\\", "\\"); System.Environment.SetEnvironmentVariable("HDCNETSDK", m_sHCNetSDKPath); } } } }
//断开视频 public void DisConnectVideoSelf() { if (m_lPlayHandle != -1) { //StopRecFile(); VsClientAPI.VSSP_ClientStop(m_lPlayHandle); //pnlShowVideo.Refresh(); //pnlShowVideo.BackgroundImage = Resources.VideoBack; m_bConnected = false; m_lPlayHandle = -1; m_strCamId = ""; m_strName = ""; m_strSvrIp = ""; } }
/// <summary> /// 打开音频 /// </summary> public Int32 OpenAudio() { Int32 iRet = -1; if (m_lHandle != -1) { if (m_bConnected == true) { iRet = VsClientAPI.VSSP_ClientPlayAudio(m_lHandle); if (m_iVolume != 0) { iRet = VsClientAPI.VSSP_ClientAudioVolum(m_lHandle, m_iVolume); } } } return(iRet); }
/// <summary> /// 断开视频 /// </summary> public Int32 DisConnectVideo() { Int32 iRet = -1; if (m_lHandle != -1) { if (m_bRecording == true) { StopRecFile(); } iRet = VsClientAPI.VSSP_ClientStop(m_lHandle); m_bConnected = false; m_lHandle = -1; m_strDevId = ""; } return(iRet); }
//连接视频 public void ConnectVideo(string strId, string strIp, string strName, int iType, int iChannel, int iLoginHandle = -1) { m_iType = iType; switch (iType) { case 1: //自己api m_sIp = strIp; m_sCamId = strId; m_sName = strName; DefVsClient.CHANNEL_CONINFOR sChConInfor = GetChConInfor(); m_iPlayHandle = VsClientAPI.VSSP_ClientStart(ref sChConInfor); break; case 2: //海康api ConnectVideoHik(iLoginHandle, iChannel, strName); break; } }
/// <summary> /// 双击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PanelFull_DoubleClick(object sender, EventArgs e) { if (m_iType != -1) { switch (m_iType) { case 1: //自己api VsClientAPI.VSSP_ClientSetPlayHwnd(m_iHandle, m_pOldHandle); this.Visible = false; break; case 2: //海康api StopPlayHik(); this.Visible = false; break; } } }
/// <summary> /// 释放资源 /// </summary> public void DelVideoAx() { if (m_lstLoginInfo.Count > 0) { ucSVideo.StopPlay(); /*\ 关闭线程 /*/ m_oThread.Abort(); for (int i = 0; i < m_lstLoginInfo.Count; i++) { if (m_lstLoginInfo[i].iHandle != -1) { CHCNetSDK.NET_DVR_Logout_V30(m_lstLoginInfo[i].iHandle); m_lstLoginInfo.Clear(); } } bool bHikIsSucc = CHCNetSDK.NET_DVR_Cleanup(); Int32 iIsSucc = VsClientAPI.VSSP_ClientCleanup(); } }
/// <summary> /// 释放资源 /// </summary> public void DelVideoAx() { m_bIsInitHikSucc = false; m_bIsInitSelfSucc = false; m_oThreadLogin.Abort(); if (m_lstLoginInfo.Count > 0) { ucVGSHow.DisConnectVideoAll(); for (int i = 0; i < m_lstLoginInfo.Count; i++) { if (m_lstLoginInfo[i].iHandle != -1) { CHCNetSDK.NET_DVR_Logout(m_lstLoginInfo[i].iHandle); } } m_lstLoginInfo.Clear(); bool bHikIsSucc = CHCNetSDK.NET_DVR_Cleanup(); Int32 iIsSucc = VsClientAPI.VSSP_ClientCleanup(); } }
//断开视频 public void DisConnectVideo() { if (m_lHandle != -1) { //StopRecFile(); VsClientAPI.VSSP_ClientStop(m_lHandle); //pnlShowVideo.Refresh(); //pnlShowVideo.BackgroundImage = Resources.VideoBack; m_lHandle = -1; m_strCamId = ""; m_strSvrIp = ""; m_bConnected = false; m_bRecording = false; pnlCaption.Visible = false; m_iType = -1; m_iChannel = -1; m_bIsFirstFloder = false; m_HikLoginHandle = -1; } }
//销毁相关资源 public void UnInitBethVideo() { tmrDealMsg.Enabled = false; if (m_lstLoginInfo.Count > 0) { ucVideoMain.DisAllConnectVideo(); /*\ 关闭线程 /*/ m_threadLoginHost.Abort(); for (int i = 0; i < m_lstLoginInfo.Count; i++) { if (m_lstLoginInfo[i].iHandle >= 0) { CHCNetSDK.NET_DVR_Logout_V30(m_lstLoginInfo[i].iHandle); } } m_lstLoginInfo.Clear(); VsClientAPI.VSSP_ClientCleanup(); CHCNetSDK.NET_DVR_Cleanup(); } }
//设置视频参数 public Int32 SetVideoParams(Int32 _iBri, Int32 _iCon, Int32 _iSat, Int32 _iHue) { Int32 iRet = -1; if (m_lHandle != -1) { DefVsClient.PARAM_SET_DATA ParamSetData = new DefVsClient.PARAM_SET_DATA(); DefVsClient.CHANNEL_CONINFOR sChConInfor = GetChConInfor(); ParamSetData.m_sNetLinkInfo = sChConInfor.m_sNetLinkInfo; ParamSetData.m_iChNo = sChConInfor.m_iChNo; ParamSetData.m_iCommand = (Int32)ParamCmdType.cmdViParam; ParamSetData.m_iPriority = 1; byte[] byteArray = new byte[4096]; byteArray[0] = (byte)_iBri; byteArray[1] = (byte)_iCon; byteArray[2] = (byte)_iSat; byteArray[3] = (byte)_iHue; ParamSetData.m_pchParams = byteArray; iRet = VsClientAPI.VSSP_ClientSetDevParam(ref ParamSetData); } return(iRet); }
/// <summary> /// 读取配合文件ini的回调函数 /// </summary> /// <param name="_sCallBackData">读取的key值和value(json字符串)</param> public void ReadIniCallBack(string _sCallBackData) { JObject jObject = JObject.Parse(_sCallBackData); if (jObject.Count > 0) { foreach (var Obj in jObject) { //读取的VsClient.dll的路径,并初始化动态库 if (Obj.Key == "VsClientPath") { JToken jToken = Obj.Value; m_sVsClientPath = jToken.Value <string>(); if (m_sVsClientPath != "") { //加载自己的api库 if (VsClientAPI.LoadVsClientAPI(m_sVsClientPath)) { VsClientAPI.VSSP_ClientStartup(DefIcomClient.WM_VSCLIENT_DLL_MSG, this.Handle, m_MsgCallBackSelf); VsClientAPI.VSSP_ClientWaitTime(2, 2); } } } //读取HCNetSDK.dll的路径,并初始化动态库 else if (Obj.Key == "HikSDKPath") { JToken jToken = Obj.Value; m_sHCNetSDKPath = jToken.Value <string>(); //设置海康的环境变量 System.Environment.SetEnvironmentVariable("HDCNETSDK_BETHVIDEO", m_sHCNetSDKPath); //初始化海康sdk if (CHCNetSDK.NET_DVR_Init()) { CHCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(m_MsgCallback, IntPtr.Zero); } } } } }
/// <summary> /// 释放资源 /// </summary> public void DelVideoAx() { VsClientAPI.VSSP_ClientCleanup(); }
/// <summary> /// 返回文件播放的时间 /// </summary> /// <returns>返回文件播放时间</returns> public long GetFilePlayTime() { return(VsClientAPI.VSSP_ClientGetPlayedTime(m_lHandle)); }
/// <summary> /// 返回文件播放时间(绝对时间,从开始播放当前时间开始) /// </summary> public uint GetFilePlayTimeByTime() { return(VsClientAPI.VSSP_GetDownPlayTime(m_lHandle)); }