public static extern int SP_PreviewInfo(ref NET_DVR_PREVIEWINFO previewInfo, int lenth);
private void treeMain_DoubleClick(object sender, EventArgs e) { try { TreeNode node = treeMain.SelectedNode; if (node.Nodes.Count > 0) { return; } foreach (ClsNVRInfo nvr in Global.nvrList) { if (node.Text == nvr.nvrName) { try { if (0 == SPlate.SP_InitNVR(nvr.ip, nvr.port, nvr.loginName, nvr.password)) { Global.LogServer.Add(new LogInfo("ParamSet-Debug", "SP_InitNVR true", (int)EnumLogLevel.DEBUG)); IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(nvr.config)); int lenth = 0; SPlate.SP_GetNvrCfg(ip, ref lenth); nvr.config = (NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ip, typeof(NET_DVR_IPPARACFG_V40)); for (int i = 0; i < nvr.config.dwDChanNum; i++) { Global.LogServer.Add(new LogInfo("ParamSet-Debug", "dwDChanNum:" + i.ToString(), (int)EnumLogLevel.DEBUG)); if (nvr.config.struIPDevInfo[i].byEnable == 1) { ClsVideoChannel videoChan = new ClsVideoChannel(); videoChan.ip = System.Text.Encoding.Default.GetString(nvr.config.struIPDevInfo[i].struIP.sIpV4); videoChan.channelNo = i; videoChan.loginName = System.Text.Encoding.Default.GetString(nvr.config.struIPDevInfo[i].sUserName); videoChan.password = System.Text.Encoding.Default.GetString(nvr.config.struIPDevInfo[i].sPassword); videoChan.port = nvr.config.struIPDevInfo[i].wDVRPort; videoChan.streamType = nvr.config.struStreamMode[i].byGetStreamType; videoChan.parentID = nvr.id; if (!FindVideoChanInList(videoChan.channelNo, videoChan.ip)) { videoChan.id = Global.mysqlHelper.ExecuteSql(videoChan.getInsertString()); Global.videoList.Add(videoChan); nvr.videoList.Add(videoChan); } TreeNode cNode = new TreeNode(); cNode.Text = "Video" + i.ToString(); node.Nodes.Add(cNode); Global.LogServer.Add(new LogInfo("ParamSet-Debug", "struIPDevInfo.byEnable true", (int)EnumLogLevel.DEBUG)); } } } Global.sCurSelectedNvrName = nvr.nvrName; break; } catch (System.Exception ex) { Global.LogServer.Add(new LogInfo("ParamSet-Error", "FormMain->treeMain_DoubleClick", (int)EnumLogLevel.ERROR)); } if (Global.nVideoRecogType == 1) { InitHKGroupBoard(); } } else { for (int i = 0; i < nvr.config.dwDChanNum; i++) { if (node.Text == "Video" + i.ToString()) { NET_DVR_PREVIEWINFO previewInfo = new NET_DVR_PREVIEWINFO(); previewInfo.hPlayWnd = videoBox.Handle; //预览窗口 previewInfo.lChannel = nvr.config.dwStartDChan + i; previewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 previewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP previewInfo.bBlocked = false; //0- 非阻塞取流,1- 阻塞取流 previewInfo.dwDisplayBufNum = 15; int lenth = Marshal.SizeOf(previewInfo); if (lPlayHandle >= 0) { SPlate.SP_StopPreview(lPlayHandle); lPlayHandle = -1; } lPlayHandle = SPlate.SP_PreviewInfo(ref previewInfo, lenth); //更新当前被选中的视频线路 Global.bVideoInShow = true; Global.nCurSelectedVideoChan = i; lblCurVideoNo.Text = "当前视频:Video" + i.ToString(); break; } } SwitchVideo(); } } } catch (System.Exception ex) { Global.LogServer.Add(new LogInfo("ParamSet-Error", "FormMain->treeMain_DoubleClick:" + ex.Message, (int)EnumLogLevel.ERROR)); } }