Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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