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.

94 lines
2.4 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. string fmt("/media-file/origin/%04d-%02d-%02d-%02d.dat");
  20. char file_name[1024];
  21. snprintf(file_name,sizeof(file_name),fmt.c_str(),pFrame->nYear,pFrame->nMonth,pFrame->nDay,pFrame->nHour) ;
  22. // ABFile("video_header.dat", pFrame->pHeader, pFrame->nLength);
  23. ABFile(file_name, pFrame->pContent, pFrame->nFrameLength);
  24. }
  25. 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));
  26. }
  27. else if (EXSDK_DATA_MEDIA_ON_PLAY_STATE == nDataType)
  28. {
  29. printf("EXSDK_DATA_MEDIA_ON_PLAY_STATE[%d][%d]\r\n", hMedia, nDataLen);
  30. }
  31. else if (ESXSDK_MEDIA_START_REAL_PLAY == nDataType)
  32. {
  33. printf("OnRealPlayResult[%d][%s]\r\n", hMedia, nDataLen >= 0 ? "Success" : "Failed");
  34. }
  35. else
  36. {
  37. printf("Media[hMedia:%ld][Len:%d][Type:%d]\r\n", hMedia, nDataLen, nDataType);
  38. }
  39. return 0;
  40. }
  41. int TestMediaRealPlay()
  42. {
  43. printf("MediaRealPlay %s\r\n", __FUNCTION__);
  44. XSDK_HANDLE hPlayer = 0;
  45. bool bPause = false;
  46. int nSpeed = 0;
  47. char c = 0;
  48. while((c = getchar()) != 'q')
  49. {
  50. switch(c)
  51. {
  52. case 's':
  53. {
  54. if (hPlayer)
  55. {
  56. XSDK_MediaStop(hPlayer);
  57. hPlayer = 0;
  58. }
  59. SXMediaRealPlayReq param = {0};
  60. param.nChannel = 0;
  61. param.nStreamType = 0;
  62. param.nRequestType = EXSDK_DATA_FORMATE_FRAME;
  63. param.pMediaCallback = Test_MediaCallBack;
  64. hPlayer = XSDK_MediaRealPlay(g_hDevice, &param);
  65. bPause = false;
  66. nSpeed = 0;
  67. }
  68. break;
  69. case 't':
  70. {
  71. if (hPlayer)
  72. {
  73. XSDK_MediaStop(hPlayer);
  74. hPlayer = 0;
  75. }
  76. }
  77. break;
  78. }
  79. }
  80. if (hPlayer)
  81. {
  82. XSDK_MediaStop(hPlayer);
  83. hPlayer = 0;
  84. }
  85. return 0;
  86. }