int CHaikangSDK::StopRecord(int screenNo) { int iRet; iRet = NET_DVR_StopSaveRealData(m_RealHandle[screenNo]); if(iRet == 0) { TRACE("StopRecord Error:%d\n",iRet); return 1; } else { return 0; } }
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; }
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; }