_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; }
int Demo_AlarmFortify() { //ÉèÖñ¨¾¯»Øµ÷º¯Êý NET_DVR_SetDVRMessageCallBack_V30(MessageCallback, NULL); //ÆôÓò¼·À LONG lHandle; lHandle = NET_DVR_SetupAlarmChan_V30(lUserID); if (lHandle < 0) { printf("NET_DVR_SetupAlarmChan_V30 error, %d\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_ERROR; } sleep(5000); //³·Ïú²¼·ÀÉÏ´«Í¨µÀ if (!NET_DVR_CloseAlarmChan_V30(lHandle)) { printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_ERROR; } saveFlag = 0; //×¢ÏúÉ豸 NET_DVR_Logout(lUserID); //ÊÍ·ÅSDK×ÊÔ´ NET_DVR_Cleanup(); return HPR_OK; }
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; }
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; }
/******************************************************************* 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; }
int CVideoIntecomSrvApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class m_Mutex->Unlock(); delete m_Mutex; NET_DVR_Cleanup(); return CWinApp::ExitInstance(); }
CHaikangSDK::~CHaikangSDK() { for(int i=0;i<MAX_DEVICE_NUM;i++) StopPlay(i); PtzStopPlay(); NET_DVR_Cleanup(); }
VideoWidget::~VideoWidget() { delete ui; if (m_realplay != NULL) { delete m_realplay; m_realplay = NULL; } NET_DVR_Cleanup(); }
DeviceHK::DeviceHK() { InfoL << endl; static onceToken token( []() { NET_DVR_Init(); NET_DVR_SetDVRMessageCallBack_V31([](LONG lCommand,NET_DVR_ALARMER *pAlarmer,char *pAlarmInfo,DWORD dwBufLen,void* pUser){ WarnL<<pAlarmInfo; return TRUE; },NULL); }, []() { NET_DVR_Cleanup(); }); }
int record() { //--------------------------------------- //启动预览并设置回调数据流 //LONG lRealPlayHandle; NET_DVR_CLIENTINFO ClientInfo = {0}; ClientInfo.hPlayWnd = 0; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 ClientInfo.lChannel = 1; //预览通道号 ClientInfo.lLinkMode = 0; //最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式; ClientInfo.sMultiCastIP = NULL; //多播地址,需要多播预览时配置 BOOL bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是 //lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, 0); if (lRealPlayHandle < 0) { printf("NET_DVR_RealPlay_V30 error:%d\n",NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 1; } printf("Start save...\n"); int iRet,fd; fd = open(fileName,O_RDWR|O_CREAT|O_TRUNC|O_APPEND,S_IRWXU|S_IRGRP|S_IROTH);//先调用open创建之后,不许要root权限即可录制,避免文加大小为0 close(fd); iRet = NET_DVR_SaveRealData(lRealPlayHandle,fileName); if(!iRet) { printf("pyd1---NET_DVR_SaveRealData error:%s\n",NET_DVR_GetLastError()); NET_DVR_StopSaveRealData(lRealPlayHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_ERROR; } printf("saving...\n"); sleep(10); printf("save data success!\n"); return HPR_OK; }
void _XHIKCamera::release() { if(!m_isInited) return; PlayM4_Stop(lPort); PlayM4_CloseFile(lPort); NET_DVR_Logout(m_lUserID); NET_DVR_Cleanup(); XDELETE_ARRAY(m_dataRGB); XDELETE_ARRAY(m_dataRGBOut); //下面需要删除资源 m_isInited = XFalse; }
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; }
MainWindow::~MainWindow() { // 停止解码 PlayM4_Stop(lPort); //关闭流,回收源数据缓冲 PlayM4_CloseStream(lPort); //释放播放库端口号 PlayM4_FreePort(lPort); NET_DVR_StopRealPlay(lRealPlayHandle); //注销用户 NET_DVR_Logout(lUserID); //释放SDK资源 NET_DVR_Cleanup(); delete ui; }
FYCameraLogin::~FYCameraLogin(void) { NET_DVR_Cleanup(); }
int CVideoIntercomApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class NET_DVR_Cleanup(); return CWinApp::ExitInstance(); }
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; }
int saveData() { long lRealPlayHandle; NET_DVR_CLIENTINFO ClientInfo = {0}; #if (defined(_WIN32) || defined(_WIN_WCE)) || defined(__APPLE__) ClientInfo.hPlayWnd = NULL; #elif defined(__linux__) ClientInfo.hPlayWnd = 0; #endif ClientInfo.lChannel = 1; //channel NO. //ClientInfo.lLinkMode = 0x40000000; //Record when breaking network. ClientInfo.lLinkMode = 0; ClientInfo.sMultiCastIP = NULL; printf("Start realplay...\n"); //getchar(); //lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, g_RealDataCallBack_V30, NULL, 0); lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo,NULL,NULL,0); if (lRealPlayHandle < 0) { printf("pyd1---NET_DVR_RealPlay_V30 error\n"); return HPR_ERROR; } //Set rtsp callback function of getting stream. //NET_DVR_SetStandardDataCallBack(lRealPlayHandle, g_StdDataCallBack, 0); printf("Start save data...\n"); time_t nowtime; struct tm *timeinfo; time(&nowtime); timeinfo = localtime(&nowtime); sprintf(fileName,"%d%02d%02d-%02d-%02d-%02d.mp4",1900+timeinfo->tm_year,1+timeinfo->tm_mon,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec); int iRet,fd; fd = open(fileName,O_RDWR|O_CREAT|O_TRUNC|O_APPEND,S_IRWXU|S_IRGRP|S_IROTH); close(fd); iRet = NET_DVR_SaveRealData(lRealPlayHandle,fileName); if(!iRet) { printf("pyd1---NET_DVR_SaveRealData error:%s\n",NET_DVR_GetLastError()); NET_DVR_StopSaveRealData(lRealPlayHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 1; } //getchar(); /* #ifdef _WIN32 Sleep(5000); //millisecond #elif defined(__linux__) ||defined(__APPLE__) sleep(30); //second #endif */ while(saveFlag) wait(NULL); printf("save data success!\n"); //stop NET_DVR_StopSaveRealData(lRealPlayHandle); //NET_DVR_StopRealPlay(lRealPlayHandle); //NET_DVR_Logout(lUserID); //NET_DVR_Logout_V30(lUserID); //cleanup //NET_DVR_Cleanup(); return HPR_OK; }
void HikNetHelper::freeLibrary() { if(_referenceLib > 0) { NET_DVR_Cleanup(); _referenceLib--; } }