/* * Copyright(C) 2010,Hikvision Digital Technology Co., Ltd * * File name£ºGetStream.cpp * Discription£º * Version £º1.0 * Author £ºpanyd * Create Date£º2010_3_25 * Modification History£º */ #ifdef _WIN32 #include #elif defined(__linux__) || defined(__APPLE__) #include #endif #include "HCNetSDK.h" #include "public.h" #include #include void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void* dwUser) { printf("pyd---(private_v30)Get data,the size is %d,%d.\n", time(NULL), dwBufSize); } void CALLBACK g_HikDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser) { printf("pyd---(private)Get data,the size is %d.\n", dwBufSize); } void CALLBACK g_StdDataCallBack(int lRealHandle, unsigned int dwDataType, unsigned char *pBuffer, unsigned int dwBufSize, unsigned int dwUser) { printf("pyd---(rtsp)Get data,the size is %d.\n", dwBufSize); } /******************************************************************* Function: Demo_GetStream Description: preview(no "_V30") Parameter: (IN) none Return: 0--successful£¬-1--fail¡£ **********************************************************************/ int Demo_GetStream() { NET_DVR_Init(); long lUserID; //login NET_DVR_DEVICEINFO struDeviceInfo; lUserID = NET_DVR_Login("172.2.87.106", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) { printf("pyd1---Login error, %d\n", NET_DVR_GetLastError()); return HPR_ERROR; } //Set callback function of getting stream. long lRealPlayHandle; NET_DVR_CLIENTINFO ClientInfo = {0}; #if (defined(_WIN32) || defined(_WIN_WCE)) 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; lRealPlayHandle = NET_DVR_RealPlay(lUserID, &ClientInfo); if (lRealPlayHandle < 0) { printf("pyd1---NET_DVR_RealPlay_V30 error\n"); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_ERROR; } //Set callback function of getting stream. int iRet; iRet = NET_DVR_SetRealDataCallBack(lRealPlayHandle, g_HikDataCallBack, 0); if (!iRet) { printf("pyd1---NET_DVR_RealPlay_V30 error\n"); NET_DVR_StopRealPlay(lRealPlayHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_ERROR; } #ifdef _WIN32 Sleep(5000); //millisecond #elif defined(__linux__) sleep(500); //second #endif //stop NET_DVR_StopRealPlay(lRealPlayHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return HPR_OK; } void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) { char tempbuf[256] = {0}; switch(dwType) { case EXCEPTION_RECONNECT: //Ô¤ÀÀÊ±ÖØÁ¬ printf("pyd----------reconnect--------%d\n", time(NULL)); break; default: break; } }; /******************************************************************* Function: Demo_GetStream_V30 Description: preview(_V30) Parameter: (IN) none Return: 0--successful£¬-1--fail¡£ **********************************************************************/ int Demo_GetStream_V30(LONG lUserID) { //Set callback function of getting stream. 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 = 2; //channel NO. //ClientInfo.lLinkMode = 0x40000000; //Record when breaking network. ClientInfo.lLinkMode = 0; ClientInfo.sMultiCastIP = NULL; 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); #ifdef _WIN32 Sleep(3000); //millisecond #elif defined(__linux__) ||defined(__APPLE__) sleep(5); //second #endif //stop //NET_DVR_StopRealPlay(lRealPlayHandle); //NET_DVR_Logout(lUserID); //NET_DVR_Logout_V30(lUserID); //cleanup NET_DVR_Cleanup(); return HPR_OK; } void Demo_SDK_Ability() { NET_DVR_Init(); NET_DVR_SDKABL struSDKABL = {0}; if (NET_DVR_GetSDKAbility(&struSDKABL)) { printf("SDK Max: %d\n", struSDKABL.dwMaxRealPlayNum); NET_DVR_Cleanup(); return; } NET_DVR_Cleanup(); return; } void Demo_SDK_Version() { unsigned int uiVersion = NET_DVR_GetSDKBuildVersion(); char strTemp[1024] = {0}; sprintf(strTemp, "HCNetSDK V%d.%d.%d.%d\n", \ (0xff000000 & uiVersion)>>24, \ (0x00ff0000 & uiVersion)>>16, \ (0x0000ff00 & uiVersion)>>8, \ (0x000000ff & uiVersion)); printf(strTemp); }