#include "XNetSDKTest.h" #include int CALLBACK Test_MediaCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, int nDataLen, int nDataType, void *pDataInfo, int nDataInfoSize, void *pUserData) { if (EXSDK_DATA_FORMATE_FRAME == nDataType && nDataInfoSize > 0) { SXSDK_FRAME_INFO *pFrame = (SXSDK_FRAME_INFO *)pDataInfo; int hour = pFrame->nHour ; if(hour>=11 && hour<=22) { if (pFrame->nType == XSDK_FRAME_TYPE_VIDEO) { string fmt("/extdisk/origin/%s/%s-%04d-%02d-%02d-%02d.dat"); char file_name[1024]; char * userData = (char *)pUserData; snprintf(file_name,sizeof(file_name),fmt.c_str(),userData,userData,pFrame->nYear,pFrame->nMonth,pFrame->nDay,pFrame->nHour) ; printf("file_path: %s ,%s \r\n", userData,file_name); // ABFile("video_header.dat", pFrame->pHeader, pFrame->nLength); ABFile(file_name, pFrame->pContent, pFrame->nFrameLength); } } printf("Media[hMedia:%ld][Len:%d][Type:%d/%d][%04d-%02d-%02d %02d:%02d:%02d-%03d]\r\n", hMedia, nDataLen, pFrame->nType, pFrame->nSubType, pFrame->nYear, pFrame->nMonth, pFrame->nDay, pFrame->nHour, pFrame->nMinute, pFrame->nSecond, (int)(pFrame->nTimeStamp % 1000)); } else if (EXSDK_DATA_MEDIA_ON_PLAY_STATE == nDataType) { printf("EXSDK_DATA_MEDIA_ON_PLAY_STATE[%d][%d]\r\n", hMedia, nDataLen); } else if (ESXSDK_MEDIA_START_REAL_PLAY == nDataType) { printf("OnRealPlayResult[%d][%s]\r\n", hMedia, nDataLen >= 0 ? "Success" : "Failed"); } else { printf("Media[hMedia:%ld][Len:%d][Type:%d]\r\n", hMedia, nDataLen, nDataType); } return 0; } int TestMediaRealPlay() { printf("MediaRealPlay %s\r\n", __FUNCTION__); XSDK_HANDLE hPlayer[6] ; bool bPause = false; int nSpeed = 0; char c = 0; int size = sizeof(hDeviceArr) / sizeof(hDeviceArr[0]); //while((c = getchar()) != 'q') //{ // switch(c) // { // case 's': if(size==6) { for (int i = 0; i < size; i++) { if (hPlayer[i]) { XSDK_MediaStop(hPlayer[i]); hPlayer[i] = 0; } } for (int i = 0; i < size; i++) { SXMediaRealPlayReq param = { 0 }; param.nChannel = 0; param.nStreamType = 0; param.nRequestType = EXSDK_DATA_FORMATE_FRAME; param.pMediaCallback = Test_MediaCallBack; param.pUserData = (void *)DeviceIdArr[i]; hPlayer[i] = XSDK_MediaRealPlay(hDeviceArr[i], ¶m); bPause = false; nSpeed = 0; printf("play hMedia:: %x\r\n", hDeviceArr[i]); XSDK_DevSynTime(hDeviceArr[i], "", 1); } } // break; // case 't': // { // for (int i = 0; i < size; i++) // { // if (hPlayer[i]) // { // XSDK_MediaStop(hPlayer[i]); // hPlayer[i] = 0; // } // } // // } // break; // } //} //for (int i = 0; i < size; i++) //{ // if (hPlayer[i]) // { // XSDK_MediaStop(hPlayer[i]); // hPlayer[i] = 0; // } //} return 0; }