Пример #1
0
bool clsCfgParam::funcNET_IO_PREV_CHAN_START_Cam(DEVICE *d,char *recvbuf,int iChannel)
{
	BOOL bMaster = (BOOL)recvbuf;
	NET_DVR_CLIENTINFO ndci;
	ZeroMemory(&ndci,sizeof(ndci));
	ndci.hPlayWnd = NULL;
	ndci.lChannel = 1;
	ndci.lLinkMode = 0;
	if (!bMaster)
	{
		ndci.lLinkMode &= 0x80000000;
	}

	NET_IO_NET_REALPLAY_PARAM* pParam;
	if (bMaster)
	{
		pParam = &d->MainParam;
	}
	else
	{
		pParam = &d->SubParam;
	}

	if ((d->PlayHandle < 0 && bMaster)||(d->SubHandle < 0 && !bMaster))
	{
		if (bMaster)
		{
			d->PlayHandle = NET_DVR_RealPlay_V30(d->LoginHandle,&ndci,RealDataCallBack_V30,pParam);
			TRACE("Play chan %d,Main\n",iChannel);
		}
		else
		{
			d->SubHandle = NET_DVR_RealPlay_V30(d->LoginHandle,&ndci,RealDataCallBack_V30,pParam);
			TRACE("Play chan %d,Sub\n",iChannel);
		}

	}

	if ((d->PlayHandle < 0 && bMaster)||(d->SubHandle < 0 && !bMaster))
	{
		clsNetIONvr::m_CLog.SaveLogInfo("²¥·Åʧ°Ü£¡");
		return false;
	}
	BOOL ret;
	if (bMaster)
	{
		ret = NET_DVR_MakeKeyFrame(d->LoginHandle,d->PlayHandle);
	}
	else
	{
		ret = NET_DVR_MakeKeyFrameSub(d->LoginHandle,d->SubHandle);
	}
	if (ret < 0)
	{
		clsNetIONvr::m_CLog.SaveLogInfo("ÖØÖÃI֡ʧ°Ü");
		return false;
	}
	return true;
}
Пример #2
0
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;
}
Пример #3
0
_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;
}
Пример #4
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;
}
Пример #5
0
LONG CPlayer::HKStartMonitor(HWND hWnd, LONG lChannel, char *sMultiCastIP)
{
	NET_DVR_CLIENTINFO struPlayInfo;

	struPlayInfo.hPlayWnd = hWnd;	
	struPlayInfo.lChannel = lChannel;
	struPlayInfo.lLinkMode = 0;
	struPlayInfo.sMultiCastIP = sMultiCastIP;

	m_lPlayHandle = NET_DVR_RealPlay_V30(m_hkDVRUserID, &struPlayInfo, NULL, 0, 0);

	return m_lPlayHandle;
}
Пример #6
0
bool clsCfgParam::funcNET_IO_PREV_CHAN_HEAD_Cam(DEVICE *d,int iChannel,char *recvbuf,char *sendbuf,int *iLen,void *pNetIoNvr)
{
	BOOL bMaster = (BOOL)recvbuf;
	if (bMaster)
	{
		printf_s("Begin to get chan %d Head,Main\n",iChannel);
		if (d->HeadLength <= 0)
		{
			NET_DVR_CLIENTINFO ndci;
			ZeroMemory(&ndci,sizeof(ndci));
			ndci.hPlayWnd = NULL;
			ndci.lChannel = 1;
			ndci.lLinkMode = 0;
			if (!bMaster)
			{
				ndci.lLinkMode &= 0x80000000;
			}

			NET_IO_NET_REALPLAY_PARAM* pParam;
			if (bMaster)
			{
				pParam = &d->MainParam;
			}
			else
			{
				pParam = &d->SubParam;
			}
			pParam->p = pNetIoNvr;
			pParam->chan = iChannel;
			pParam->bMaster = (BOOL)recvbuf;

			if (d->PlayHandle < 0)
			{
				d->PlayHandle = NET_DVR_RealPlay_V30(d->LoginHandle,&ndci,RealDataCallBack_V30,pParam);
			}
			if (d->PlayHandle < 0)
			{
				clsNetIONvr::m_CLog.SaveLogInfo("²¥·Åʧ°Ü£¡");
			}
			else
			{
				printf_s("Already begin to get chan %d Head,Main\n",iChannel);
				int i = 1000;
				while(d->HeadLength <= 0)
				{
					i--;
					Sleep(1);
					if (i < 0)
					{
						*iLen = d->HeadLength;
						printf_s("Failed to get chan %d Head,Main\n",iChannel);
						return 0;
					}
				}
				memcpy_s(sendbuf, 300, d->Head, d->HeadLength);
				*iLen = d->HeadLength;
				printf_s("Get chan %d Head,Main, len is %d\n",iChannel, *iLen);
			}
		}
		else
		{
			memcpy_s(sendbuf, 300, d->Head, d->HeadLength);
			*iLen = d->HeadLength;
		}
	} 
	else
	{
		printf_s("Begin to get chan %d Head,Sub\n",iChannel);
		if (d->SubHeadLength <= 0)
		{
			NET_DVR_CLIENTINFO ndci;
			ZeroMemory(&ndci,sizeof(ndci));
			ndci.hPlayWnd = NULL;
			ndci.lChannel = 1;
			ndci.lLinkMode = 0;
			if (!bMaster)
			{
				ndci.lLinkMode &= 0x80000000;
			}

			NET_IO_NET_REALPLAY_PARAM* pParam;
			if (bMaster)
			{
				pParam = &d->MainParam;
			}
			else
			{
				pParam = &d->SubParam;
			}
			pParam->p = pNetIoNvr;
			pParam->chan = iChannel;
			pParam->bMaster = (BOOL)recvbuf;

			if (d->SubHandle < 0)
			{
				d->SubHandle = NET_DVR_RealPlay_V30(d->LoginHandle,&ndci,RealDataCallBack_V30,pParam);
			}
			if (d->SubHandle < 0)
			{
				clsNetIONvr::m_CLog.SaveLogInfo("²¥·Åʧ°Ü£¡");
			}
			else
			{
				int i = 800;
				while(d->SubHeadLength <= 0)
				{
					i--;
					Sleep(1);
					if (i < 0)
					{
						*iLen = d->SubHeadLength;
						return 0;
					}
				}
				memcpy_s(sendbuf, 300, d->SubHead, d->SubHeadLength);
				*iLen = d->SubHeadLength;
			}
		}
		else
		{
			memcpy_s(sendbuf, 300, d->SubHead, d->SubHeadLength);
			*iLen = d->SubHeadLength;
		}
	}
	return true;
}
Пример #7
0
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;
}
Пример #8
0
bool CDevHKPreview::StartRealPlay()
{

    NET_DVR_CLIENTINFO ;
    NET_DVR_RealPlay_V30();
}
Пример #9
0
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;
}