public Form1() { InitializeComponent(); SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW); int i = CMSSdk.VM_CMS_Init(); if (i < 0) { MessageBox.Show("流媒体初始化失败!"); } else { CMSSdk.LPCMS_USER_LOGIN_INFO LoginInfo = new CMSSdk.LPCMS_USER_LOGIN_INFO(); LoginInfo.szIP = "192.0.0.66"; LoginInfo.uPort = 8000; LoginInfo.szUser = "******"; LoginInfo.szPassword = "******"; lHandle = CMSSdk.VM_CMS_Login(ref LoginInfo, 0); if (lHandle < 0) { MessageBox.Show("媒体管理服务器登录失败!"); } else { MessageBox.Show("媒体管理服务器登录成功!"); } } }
private void 关闭预览ToolStripMenuItem_Click(object sender, EventArgs e) { if (System.Configuration.ConfigurationManager.AppSettings["MediaStream"] == "1") { if (CMSSdk.VM_CMS_StopPlay(hwnd[selectedIndex]) == -1) { MessageBox.Show("关闭失败!"); return; } DeviceIDs[selectedIndex] = null; hwnd[selectedIndex] = -1; SID[selectedIndex] = null; videoboxs[selectedIndex].Refresh(); videoboxs[selectedIndex].ClearVideoInfo(); } else { if (!PreviewDemo.CHCNetSDK.NET_DVR_StopRealPlay(hwnd[selectedIndex])) { MessageBox.Show("关闭失败!"); } else { DeviceIDs[selectedIndex] = null; hwnd[selectedIndex] = -1; videoboxs[selectedIndex].Refresh(); videoboxs[selectedIndex].ClearVideoInfo(); } } }
//查询录像文件 private void button8_Click(object sender, EventArgs e) { //通过时间查询录像文件、 call = CallbackCAMFile; string startTime = dateTimePicker1.Value.ToString("yyyyMMdd") + dateTimePicker2.Value.ToString("HHmmss"); string endTime = dateTimePicker3.Value.ToString("yyyyMMdd") + dateTimePicker4.Value.ToString("HHmmss"); int i = CMSSdk.VM_CMS_FindFileTime(0, szSID, startTime, endTime, call, 0); }
//查询 private void button3_Click(object sender, EventArgs e) { //通过时间查询录像文件、 call = CallbackCAMFile; string startTime = monthCalendar1.SelectionStart.ToString("yyyyMMdd") + "000000"; string endTime = monthCalendar1.SelectionStart.ToString("yyyyMMdd") + "235959"; int i = CMSSdk.VM_CMS_FindFileTime(0, szSID, startTime, endTime, call, 0); }
//打开预览 private void button1_Click_1(object sender, EventArgs e) { if (lHandle != -1) { int i = CMSSdk.VM_CMS_RealPlay(lHandle, pictureBox1.Handle, "ch1"); if (i < 0) { MessageBox.Show("视频预览失败!"); } } }
} //发送视频调阅命令 private void button1_Click(object sender, EventArgs e) { //直接使用流媒体库播放视频 string sid = listBox2.SelectedValue.ToString(); returningValue1 = CMSSdk.VM_CMS_RealPlay(lHandle, pictureBox1.Handle, "ch1"); if (returningValue1 < 0) { MessageBox.Show("预览失败!"); } }
//添加流媒体服务器 private void button1_Click(object sender, EventArgs e) { CMSSdk.LPCMS_VMSR VMSInfo = new CMSSdk.LPCMS_VMSR(); VMSInfo.szIP = textBox1.Text; VMSInfo.szPort = textBox2.Text; VMSInfo.szMaxChannel = textBox3.Text; if (CMSSdk.VM_CMS_AddVMS(lHandle, ref VMSInfo, 0) < 0) { MessageBox.Show("添加流媒体服务器失败!"); } else { MessageBox.Show("添加流媒体服务器成功!"); } }
string szSID = "ch1"; //视频标识 public Form2() { InitializeComponent(); #region 连接外部数据中心 //IPAddress ExternalDataCentreService_IP = IPAddress.Parse(ConfigurationManager.AppSettings["ExternalDataCentreService_IP"]); //int ExternalDataCentreService_Port1 = int.Parse(ConfigurationManager.AppSettings["ExternalDataCentreService_Port1"]); //int ExternalDataCentreService_Port2 = int.Parse(ConfigurationManager.AppSettings["ExternalDataCentreService_Port2"]); //IPEndPoint ipe1 = new IPEndPoint(ExternalDataCentreService_IP, ExternalDataCentreService_Port1); //clientSocket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //clientSocket1.Connect(ipe1); //IPEndPoint ipe2 = new IPEndPoint(ExternalDataCentreService_IP, ExternalDataCentreService_Port2); //clientSocket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //clientSocket2.Connect(ipe2); #endregion #region 建立socket服务器监听外部数据中心返回值 int ListenPort = int.Parse(ConfigurationManager.AppSettings["ListenPort"]); IPAddress ListenIP = IPAddress.Parse(ConfigurationManager.AppSettings["ListenIP"]); IPEndPoint ipe = new IPEndPoint(ListenIP, ListenPort); sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sSocket.Bind(ipe); sSocket.Listen(0); Thread th = new Thread(new ThreadStart(ReveiceData)); th.IsBackground = true; th.Start(); #endregion //初始化流媒体 //returningValue1 = VMSdk.VM_CLIENT_Init(); returningValue1 = CMSSdk.VM_CMS_Init(); CMSSdk.LPCMS_USER_LOGIN_INFO LoginInfo = new CMSSdk.LPCMS_USER_LOGIN_INFO(); LoginInfo.szIP = ConfigurationManager.AppSettings["MediaStream_IP"]; LoginInfo.uPort = int.Parse(ConfigurationManager.AppSettings["MediaStream_Port"]); LoginInfo.szUser = ConfigurationManager.AppSettings["MediaStream_User"]; LoginInfo.szPassword = ConfigurationManager.AppSettings["MediaStream_Password"]; lHandle = CMSSdk.VM_CMS_Login(ref LoginInfo, 0); if (lHandle < 0) { MessageBox.Show("媒体管理服务器登录失败!"); } else { MessageBox.Show("媒体管理服务器登录成功!"); } }
//添加设备到流媒体服务器 private void button4_Click(object sender, EventArgs e) { //获取摄像机RTSP地址 HIKConfig = new CMSSdk.LPCMS_CONFIG_HIKVISION(); HIKConfig.sDeviceAddress = "192.0.0.11"; HIKConfig.ulPort = 554; HIKConfig.sUserName = "******"; HIKConfig.sPassword = "******"; HIKConfig.lChannel = 1; HIKConfig.ulStreamType = 0; HIKConfig.ulLinkMode = 0; HIKConfig.ulVideoEncType = 0; IntPtr sp = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(CMSSdk.LPCMS_CONFIG_HIKVISION))); Marshal.StructureToPtr(HIKConfig, sp, true); int i; i = CMSSdk.VM_CMS_CAMToRTSP(ref HIKConfig, CMSSdk.emCMS_CAM_TYPE.CMS_CAM_HIKVISION, ref myAddress); if (i < 0) { MessageBox.Show("获取摄像机RTSP地址失败!"); } ClassLibrary1.CMSSdk.LPCMS_CAM CAMInfo = new CMSSdk.LPCMS_CAM(); CAMInfo.szSid = "ch2"; CAMInfo.szIP = "192.0.0.11"; CAMInfo.szPort = "554"; CAMInfo.szRTSP = myAddress.szRtspOutput; CAMInfo.szMark = "hikvision"; //CAMInfo.szState = ""; //byte[] test= serializeInfoObjToByteArray(CAMInfo); i = CMSSdk.VM_CMS_AddCAM(lHandle, ref CAMInfo, 0); if (i < 0) { MessageBox.Show("添加摄像机失败!"); } else { MessageBox.Show("添加摄像机成功!"); } }
private void LoginMediaServer() { //单独启动该窗体时需要初始化、登录媒体服务器 int i = CMSSdk.VM_CMS_Init(); if (i < 0) { MessageBox.Show("媒体管理器初始化失败!"); return; } CMSSdk.LPCMS_USER_LOGIN_INFO LoginInfo = new CMSSdk.LPCMS_USER_LOGIN_INFO(); LoginInfo.szIP = "192.0.0.66"; LoginInfo.uPort = 8000; LoginInfo.szUser = "******"; LoginInfo.szPassword = "******"; lRet = CMSSdk.VM_CMS_Login(ref LoginInfo, 0); if (lRet < 0) { MessageBox.Show("媒体管理器登录失败!"); return; } }
//关闭预览 private void button2_Click_1(object sender, EventArgs e) { CMSSdk.VM_CMS_StopPlay(lHandle); }
private static void Init() { //绑定服务状态事件 CommunicationClass.ServiceStatusEvent += CommunicationClass_ServiceStatusEvent; //1、初始化通信类 bool result1 = CommunicationClass.Init(); if (result1) { ShowResult("通讯初始化成功!"); //初始化设备数据 Class1 class1 = new Class1(); class1.Init(); if (Class1.IsDone) { NetPing.StateCallback();//状态实时信息 } //报警预案数据初始化 //ClassPlan classplan = new ClassPlan(); //classplan.PlanInit(); } else { ShowResult("通讯初始化失败!"); } //2、流媒体初始化 //先判断流媒体是否启用 if (System.Configuration.ConfigurationManager.AppSettings["MediaStream"] == "1") { int result5 = CMSSdk.VM_CMS_Init(); if (result5 != -1) { ShowResult("流媒体初始化成功!"); } else { ShowResult("流媒体初始化失败!"); } CMSSdk.LPCMS_USER_LOGIN_INFO LoginInfo = new CMSSdk.LPCMS_USER_LOGIN_INFO(); LoginInfo.szIP = System.Configuration.ConfigurationManager.AppSettings["MediaStream_IP"]; LoginInfo.uPort = int.Parse(System.Configuration.ConfigurationManager.AppSettings["MediaStream_Port"]); LoginInfo.szUser = System.Configuration.ConfigurationManager.AppSettings["MediaStream_User"]; LoginInfo.szPassword = System.Configuration.ConfigurationManager.AppSettings["MediaStream_Password"]; form1.lHandle = CMSSdk.VM_CMS_Login(ref LoginInfo, 0); if (form1.lHandle < 0) { MessageBox.Show("媒体管理服务器登录失败!"); } else { MessageBox.Show("媒体管理服务器登录成功!"); } } //3、录像初始化 bool result6 = RecDataClass.Init(); if (result6) { ShowResult("SDK初始化成功!"); } else { ShowResult("SDK初始化失败!"); } //4、报警初始化 CommunicationClass.AlarmEvent += AlarmOperation.Alarm; }
/// <summary> /// 视频预览 /// </summary> /// <param name="strDeviceID"></param> /// <param name="index"></param> /// <returns></returns> public static int Open(string strDeviceID, int index, ref string IP, ref int nChannel, ref int m_lUserID, ref int m_lRealHandle) { if (Form1.videoboxs[index].InvokeRequired) { ControlDelegate d = Open; Form1.videoboxs[index].Invoke(d, strDeviceID, index, IP, nChannel, m_lUserID, m_lRealHandle); } else { Guid DeviceID = new Guid(strDeviceID); Entities.CameraList device = Class1.cameraList.Find( delegate(Entities.CameraList camera) { return(camera.DeviceID.Equals(DeviceID)); } ); if (device == null) { return(-1); } Entities.StreamMediaList streamMedia = Class1.streamMediaList.Find( delegate(Entities.StreamMediaList sm) { return(sm.DeviceID.Equals(device.StreamMedia_DeviceID)); }); if (streamMedia == null) { return(-1); } IP = streamMedia.VideoIP; nChannel = device.VideoChannel; string mediaMedia = System.Configuration.ConfigurationManager.AppSettings["MediaStream"]; if (mediaMedia == "1") { #region 流媒体预览 Entities.StreamServerList server = Class1.streamServerList.Find( delegate(Entities.StreamServerList ss) { return(ss.DeviceID.Equals(streamMedia.StreamServerID)); } ); if (server == null) { return(-1); } //视频预览 VMSdk.VM_CLIENT_CONFIG_VMSTREAMINGSER config = new VMSdk.VM_CLIENT_CONFIG_VMSTREAMINGSER(); config.sSID = device.Stream_MainID.ToString(); config.sDeviceAddress = server.StreamServerIP; if (SearchRealPlayVideo(config.sSID, index)) { //流媒体预览视频 //Form1.hwnd[index] = VMSdk.VM_CLIENT_RealPlay(Form1.videoboxs[index].pictureBox1.Handle.ToInt32(), ref config, (int)VMSdk.VM_CLIENT_DEV_TYPE.VM_CLIENT_DEV_RTSP_VMSTREAMINGSER); Form1.hwnd[index] = CMSSdk.VM_CMS_RealPlay(0, Form1.videoboxs[index].pictureBox1.Handle, config.sSID); //存储视频信息 Form1.SID[index] = config.sSID; } #endregion } else { if (SearchRealPlayVideo2(strDeviceID, index)) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = Form1.videoboxs[index].pictureBox1.Handle; //预览窗口 lpPreviewInfo.lChannel = device.VideoChannel; //预te览的设备通道 lpPreviewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 lpPreviewInfo.dwDisplayBufNum = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 if (streamMedia.VideoIP == null) { return(-1); } if (!RecDll.ManualRec.userIDList.ContainsKey(streamMedia.VideoIP)) { return(-1); } int UserID = RecDll.ManualRec.userIDList[streamMedia.VideoIP]; m_lUserID = UserID; Form1.hwnd[index] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); m_lRealHandle = Form1.hwnd[index]; if (Form1.hwnd[index] == -1) { uint temp = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("视频预览失败!"); } else { //Form1.SID[index] = config.sSID; Form1.DeviceIDs[index] = strDeviceID; Form1.videoboxs[index].SetVideoInfo(IP, nChannel, m_lUserID, m_lRealHandle, strDeviceID, device.VideoName); } } } } return(Form1.hwnd[index]); }