_XBool _XHIKCamera::init(_XCameraData &data) { if(m_isInited) return XTrue; m_cameraWidth = data.w; m_cameraHeight = data.h; //width = &m_cameraWidth; //height = & m_cameraHeight; m_buffSize = m_cameraWidth * m_cameraHeight * 3; m_cameraTexWidth = m_cameraWidth; m_cameraTexHeight = m_cameraHeight; //初始化摄像头并连接设备 NET_DVR_Init(); //初始化 m_lUserID = NET_DVR_Login_V30(data.ipAddress,data.port,data.userName,data.pwd,&m_structDeviceInfo); if(m_lUserID < 0) {//连接设备失败 printf("Login error, %d\n", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return XFalse; } //下面开始连接回调函数并分配内存空间 m_dataRGB = createArrayMem<unsigned char>(m_buffSize); //分配内存空间 if(m_dataRGB == NULL) return XFalse; memset(m_dataRGB,0,m_buffSize); m_dataRGBOut = createArrayMem<unsigned char>(m_buffSize); if(m_dataRGBOut == NULL) return XFalse; haveNewFrame = &m_haveNewFrame; pOutRGB = m_dataRGB; NET_DVR_SetExceptionCallBack_V30(0,NULL,g_ExceptionCallBack,NULL); NET_DVR_CLIENTINFO ClientInfo = {0}; ClientInfo.hPlayWnd = NULL; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 ClientInfo.lChannel = 0; //预览通道号 ClientInfo.lLinkMode = 0; //最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式; ClientInfo.sMultiCastIP = NULL; //多播地址,需要多播预览时配置 //BOOL bPreviewBlock = XFalse; //请求码流过程是否阻塞,0:否,1:是 m_lRealPlayHandle = NET_DVR_RealPlay_V30(m_lUserID,&ClientInfo,NULL,NULL,XFalse); if(m_lRealPlayHandle < 0) { printf("NET_DVR_RealPlay_V30 error\n"); NET_DVR_Logout(m_lUserID); NET_DVR_Cleanup(); return XFalse; } if(!NET_DVR_SetRealDataCallBack(m_lRealPlayHandle,g_RealDataCallBack_V30,0)) { printf("NET_DVR_SetRealDataCallBack error\n"); } m_cameraTex.createTexture(m_cameraWidth,m_cameraHeight,COLOR_RGB); //不允许进行2的n次方扩展,这回造成不兼容 m_cameraSprite.init(m_cameraWidth,m_cameraHeight,0); m_haveNewFrame = XFalse; m_isInited = XTrue; return XTrue; }
bool CHaikangSDK::PtzStartPlay(char *sip,int nPort,int channel,char *user,char *psw,HWND hWnd) { //--------------------------------------- // 注册设备 NET_DVR_DEVICEINFO_V30 struDeviceInfo; m_ptzLoginHandle = NET_DVR_Login_V30(sip, nPort, user, psw, &struDeviceInfo); if (m_ptzLoginHandle < 0) { return false; } //--------------------------------------- //启动预览并设置回调数据流 NET_DVR_CLIENTINFO ClientInfo = {0}; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 ClientInfo.hPlayWnd = hWnd; ClientInfo.lChannel = channel; //预览通道号 //主码流 ClientInfo.lLinkMode = 0; ClientInfo.sMultiCastIP = NULL; //多播地址,需要多播预览时配置 BOOL bPreviewBlock = false; m_ptzRealHandle = NET_DVR_RealPlay_V30(m_ptzLoginHandle, &ClientInfo, NULL, this, 0); if (m_ptzRealHandle < 0) { NET_DVR_Logout(m_ptzLoginHandle); m_ptzLoginHandle = -1; return false; } return true; }
/******************************************************************* Function: Demo_Capture Description: Capture picture. Parameter: (IN) none Return: 0--success£¬-1--fail. **********************************************************************/ int Demo_Capture() { NET_DVR_Init(); long lUserID; //login NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("172.4.1.162", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) { printf("pyd1---Login error, %d\n", NET_DVR_GetLastError()); return HPR_ERROR; } // NET_DVR_JPEGPARA strPicPara = {0}; strPicPara.wPicQuality = 2; strPicPara.wPicSize = 0; int iRet; iRet = NET_DVR_CaptureJPEGPicture(lUserID, struDeviceInfo.byStartChan, &strPicPara, "./ssss.jpeg"); if (!iRet) { printf("pyd1---NET_DVR_CaptureJPEGPicture error, %d\n", NET_DVR_GetLastError()); return HPR_ERROR; } //logout NET_DVR_Logout_V30(lUserID); NET_DVR_Cleanup(); return HPR_OK; }
LONG CPlayer::HKDVRLogin(char *sDVRIp, WORD wDVRPort, char *sUserName, char *sPassword) { NET_DVR_DEVICEINFO_V30 struDeviceInfo; memset(&struDeviceInfo, 0, sizeof(NET_DVR_DEVICEINFO_V30)); m_hkDVRUserID = NET_DVR_Login_V30(sDVRIp, wDVRPort, sUserName, sPassword, &struDeviceInfo); return m_hkDVRUserID; }
void CSingleCamDlg::OnBnClickedBtnLogin()//登录 { if (isLogin) //如果已经登录,就需要执行注销 { NET_DVR_Logout(lUserID1); NET_DVR_Logout(lUserID2); isLogin = FALSE; GetDlgItem(IDC_BTN_Login)->SetWindowTextA("登录"); GetDlgItem(IDC_BTN_PlayCam)->EnableWindow(FALSE); //播放按钮 失效 GetDlgItem(IDC_BTN_SavePicture)->EnableWindow(FALSE); // 抓图按钮失效 GetDlgItem(IDC_BTN_SavePicture2)->EnableWindow(FALSE); // 抓图按钮失效 GetDlgItem(IDC_BTN_SaveRealData)->EnableWindow(FALSE); // 抓图按钮失效 } else { char DeviceIP[16] = {0}; char DeviceIP2[16] = {0}; DWORD dwDeviceIP = 0; m_ctrlDeviceIP1.GetAddress(dwDeviceIP); CString csTemp = IPToStr(dwDeviceIP); sprintf_s(DeviceIP, "%s", csTemp.GetBuffer(0)); m_ctrlDeviceIP2.GetAddress(dwDeviceIP); csTemp = IPToStr(dwDeviceIP); sprintf_s(DeviceIP2, "%s", csTemp.GetBuffer(0)); NET_DVR_DEVICEINFO_V30 struDeviceInfo, struDeviceInfo2; lUserID1 = NET_DVR_Login_V30(DeviceIP, 8000, "admin", "12345", &struDeviceInfo); lUserID2 = NET_DVR_Login_V30(DeviceIP2, 8000, "admin", "12345", &struDeviceInfo2); if (lUserID1 < 0 || lUserID2 < 0) //登录失败时,其他几个按钮都需要disable { AfxMessageBox("登录失败!"); isLogin = FALSE; } else { isLogin = TRUE; GetDlgItem(IDC_BTN_Login)->SetWindowTextA("注销"); //登录成功, 变成注销 GetDlgItem(IDC_BTN_PlayCam)->EnableWindow(TRUE); //播放按钮 有效 } } }
int cgiMain(void) { char *ip; ip = (char *) calloc(32, sizeof(char)); //初始化 NET_DVR_Init(); NET_DVR_SetLogToFile(3,"./sdkLog"); //设置链接时间与重连时间 NET_DVR_SetConnectTime(2000,1); NET_DVR_SetReconnect(10000,true); //注册设备 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDevice; //strcpy(ip,GetIP()); lUserID = NET_DVR_Login_V30("192.168.1.64""",8000,"admin","12345",&struDevice); if(lUserID < 0) { printf("Login in ERROR:%d\n",NET_DVR_GetLastError()); NET_DVR_Cleanup(); return 1; } printf("login success!\n"); free(ip); cgiHeaderContentType("Text/html"); //while(1){ if(cgiFormSubmitClicked("reboot") == cgiFormSuccess) { TestRebootDVR(lUserID); } if(cgiFormSubmitClicked("Alarm") == cgiFormSuccess) { if(Demo_Alarm() == HPR_ERROR) goto EXIT; } if(cgiFormSubmitClicked("record") == cgiFormSuccess) { if(record() == HPR_ERROR) goto EXIT; } //} EXIT: NET_DVR_Logout_V30(lUserID); NET_DVR_Cleanup(); return 0; }
bool CHaikangSDK::StartPlay(int screenNo,char *name,char *sip,int nPort,int channel, char *user,char *psw,HWND hWnd,int subtype,int Direction) { if(m_LoginHandle[screenNo] != -1) { StopPlay(screenNo); } //--------------------------------------- // 注册设备 m_direction[screenNo]=Direction; NET_DVR_DEVICEINFO_V30 struDeviceInfo; m_LoginHandle[screenNo] = NET_DVR_Login_V30(sip, nPort, user, psw, &struDeviceInfo); if (m_LoginHandle[screenNo] < 0) { DlgMain->ShowCameraMessage(name,"Login error!",FALSE); printf("Login error, %d\n", NET_DVR_GetLastError()); //NET_DVR_Cleanup(); return false; } //--------------------------------------- //设置异常消息回调函数 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); //--------------------------------------- //启动预览并设置回调数据流 NET_DVR_CLIENTINFO ClientInfo = {0}; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 ClientInfo.hPlayWnd = NULL; ClientInfo.lChannel = channel; //预览通道号 //最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式; if(subtype == 0) ClientInfo.lLinkMode = 0; else ClientInfo.lLinkMode = 0x80000000; ClientInfo.sMultiCastIP = NULL; //多播地址,需要多播预览时配置 BOOL bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是 m_RealHandle[screenNo] = NET_DVR_RealPlay_V30(m_LoginHandle[screenNo], &ClientInfo, g_RealDataCallBack_V30, this, 0); if (m_RealHandle[screenNo] < 0) { DlgMain->ShowCameraMessage(name,"Play error!",FALSE); printf("NET_DVR_RealPlay_V30 error\n"); NET_DVR_Logout(m_LoginHandle[screenNo]); // NET_DVR_Cleanup(); m_LoginHandle[screenNo] = -1; return false; } DlgMain->ShowCameraMessage(name,"连接成功",FALSE); return true; }
void MainWindow::on_pushButton_clicked() { qDebug("button clicked"); // 注册设备 NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("192.168.13.20", 8000, "admin", "1qaz2wsx", &struDeviceInfo); if (lUserID < 0) { qDebug("Login error, %d\n", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return; } //--------------------------------------- //设置异常消息回调函数 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); //--------------------------------------- //启动预览并设置回调数据流 //HWND hWnd = (HWND)ui->frame->winId(); //获取窗口句柄 movie.hWnd = (HWND)ui->frame->winId(); //获取窗口句柄 qDebug("hWnd:%d", movie.hWnd); NET_DVR_PREVIEWINFO struPlayInfo = {0}; //struPlayInfo.hPlayWnd = hWnd; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 struPlayInfo.lChannel = 1; //预览通道号 struPlayInfo.dwStreamType = 0; //0-主码流,1-子码流,2-码流3,3-码流4,以此类推 struPlayInfo.dwLinkMode = 0; //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, PsDataCallBack, &movie); if (lRealPlayHandle < 0) { DWORD error = NET_DVR_GetLastError(); qDebug("NET_DVR_RealPlay_V40 error, %d\n" , error); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } qDebug("NET_DVR_RealPlay_V40 ok!"); //QThread::sleep(10000); ////--------------------------------------- ////关闭预览 //NET_DVR_StopRealPlay(lRealPlayHandle); ////注销用户 //NET_DVR_Logout(lUserID); ////释放SDK资源 //NET_DVR_Cleanup(); return; }
LONG FYCameraLogin::LogInDev(FY_CameraInfo CameraInfo) { //--------------------------------------- // 注册设备 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30(CameraInfo.HostIP, CameraInfo.HostPort, CameraInfo.UserName, CameraInfo.Password, &struDeviceInfo); if (lUserID < 0) { printf("Login error, %d\n", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return 0; } m_lUserID = lUserID; m_CameraInfo = CameraInfo; return lUserID; }
void * HK_Store_Thread(void * para){ /*info to login HK camera*/ char HK_userName[] = "admin"; char HK_password[] = "12345"; int stopResult = 0; LONG lUserID = 0; LONG streamHandle = 0; //unsigned int NVR_recordHandle = 0; NET_DVR_DEVICEINFO_V30 struDeviceInfo; NET_DVR_CLIENTINFO ClientInfo = {0}; //ClientInfo.hPlayWnd = NULL; ClientInfo.lChannel = 1; ClientInfo.lLinkMode = 0; ClientInfo.sMultiCastIP = NULL; RecordParas *t_para = (RecordParas *)para; HKcameraArgs hkargs; //hkargs.NVR_LoginID = t_para->NVR_LoginID;//nvr server loginID strcpy(hkargs.NAR_cameraID, t_para->cameraID);//the VolID in nvr server hkargs.block_flag = 0; hkargs.NAR_recordHandle = 0; hkargs.HK_streamHandle = &streamHandle; while(1){ //-----------Init NET_DVR_Init(); hkargs.block_flag = 0; //------------Set Connecttime and ReconnectTime NET_DVR_SetConnectTime(2000,1); NET_DVR_SetReconnect(10000,TRUE); //-------------HKLogin lUserID = NET_DVR_Login_V30(t_para->cameraIP, t_para->cameraPort, HK_userName, HK_password, &struDeviceInfo); if(lUserID < 0){ syslog(LOG_ERR,"connect HK IPC %s failed! errorCode: %d\n", t_para->cameraIP, NET_DVR_GetLastError()); NET_DVR_Cleanup();//clear all the info continue; } syslog(LOG_ERR,"connect HK IPC %s sucess!\n", t_para->cameraIP); //set exception callback function NET_DVR_SetExceptionCallBack_V30(0, NULL, HK_RP_Exp_Callback, &hkargs); //get data stream and store streamHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, HK_Store_CallBack, &hkargs, 0); if(streamHandle < 0){ NET_DVR_Logout(lUserID);//get wrong handle ,logout NET_DVR_Cleanup(); continue; } while(!hkargs.block_flag){ } stopResult = NET_DVR_StopRealPlay(streamHandle); syslog(LOG_INFO,"(InHKTransdata) stoped real play ? result:%d\n", stopResult); NET_DVR_Logout_V30(lUserID); syslog(LOG_INFO,"(InHKTransdata) HKcamera Logout(loginID was %d)\n",lUserID); NET_DVR_Cleanup(); if(hkargs.block_flag == 1){ break; } } return NULL; }