You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.8 KiB

  1. #include "XNetSDKTest.h"
  2. #include <string>
  3. int CALLBACK Test_MediaCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, int nDataLen, int nDataType, void *pDataInfo, int nDataInfoSize, void *pUserData)
  4. {
  5. if (EXSDK_DATA_FORMATE_FRAME == nDataType && nDataInfoSize > 0)
  6. {
  7. SXSDK_FRAME_INFO *pFrame = (SXSDK_FRAME_INFO *)pDataInfo;
  8. int hour = pFrame->nHour ;
  9. if(hour>=11 && hour<=22)
  10. {
  11. if (pFrame->nType == XSDK_FRAME_TYPE_VIDEO)
  12. {
  13. string fmt("/extdisk/origin/%s/%s-%04d-%02d-%02d-%02d.dat");
  14. char file_name[1024];
  15. char * userData = (char *)pUserData;
  16. snprintf(file_name,sizeof(file_name),fmt.c_str(),userData,userData,pFrame->nYear,pFrame->nMonth,pFrame->nDay,pFrame->nHour) ;
  17. printf("file_path: %s ,%s \r\n", userData,file_name);
  18. // ABFile("video_header.dat", pFrame->pHeader, pFrame->nLength);
  19. ABFile(file_name, pFrame->pContent, pFrame->nFrameLength);
  20. }
  21. }
  22. 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));
  23. }
  24. else if (EXSDK_DATA_MEDIA_ON_PLAY_STATE == nDataType)
  25. {
  26. printf("EXSDK_DATA_MEDIA_ON_PLAY_STATE[%d][%d]\r\n", hMedia, nDataLen);
  27. }
  28. else if (ESXSDK_MEDIA_START_REAL_PLAY == nDataType)
  29. {
  30. printf("OnRealPlayResult[%d][%s]\r\n", hMedia, nDataLen >= 0 ? "Success" : "Failed");
  31. }
  32. else
  33. {
  34. printf("Media[hMedia:%ld][Len:%d][Type:%d]\r\n", hMedia, nDataLen, nDataType);
  35. }
  36. return 0;
  37. }
  38. int TestMediaRealPlay()
  39. {
  40. printf("MediaRealPlay %s\r\n", __FUNCTION__);
  41. XSDK_HANDLE hPlayer[6] ;
  42. bool bPause = false;
  43. int nSpeed = 0;
  44. char c = 0;
  45. int size = sizeof(hDeviceArr) / sizeof(hDeviceArr[0]);
  46. while((c = getchar()) != 'q')
  47. {
  48. switch(c)
  49. {
  50. case 's':
  51. {
  52. for (int i = 0; i < size; i++)
  53. {
  54. if (hPlayer[i])
  55. {
  56. XSDK_MediaStop(hPlayer[i]);
  57. hPlayer[i] = 0;
  58. }
  59. }
  60. for (int i = 0; i < size; i++)
  61. {
  62. SXMediaRealPlayReq param = { 0 };
  63. param.nChannel = 0;
  64. param.nStreamType = 0;
  65. param.nRequestType = EXSDK_DATA_FORMATE_FRAME;
  66. param.pMediaCallback = Test_MediaCallBack;
  67. param.pUserData = (void *)DeviceIdArr[i];
  68. hPlayer[i] = XSDK_MediaRealPlay(hDeviceArr[i], &param);
  69. bPause = false;
  70. nSpeed = 0;
  71. printf("play hMedia:: %x\r\n", hDeviceArr[i]);
  72. XSDK_DevSynTime(hDeviceArr[i], "", 1);
  73. }
  74. }
  75. break;
  76. case 't':
  77. {
  78. for (int i = 0; i < size; i++)
  79. {
  80. if (hPlayer[i])
  81. {
  82. XSDK_MediaStop(hPlayer[i]);
  83. hPlayer[i] = 0;
  84. }
  85. }
  86. }
  87. break;
  88. }
  89. }
  90. for (int i = 0; i < size; i++)
  91. {
  92. if (hPlayer[i])
  93. {
  94. XSDK_MediaStop(hPlayer[i]);
  95. hPlayer[i] = 0;
  96. }
  97. }
  98. return 0;
  99. }