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.

97 lines
2.1 KiB

  1. #include "XNetSDKTest.h"
  2. int CALLBACK Test_DownloadByNameCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, int nDataLen, int nDataType, void *pDataInfo, int nDataInfoSize, void *pUserData)
  3. {
  4. static int nDownload = 0;
  5. if (EXCMD_DOWNLOAD_DATA == nDataType && nDataLen > 0)
  6. {
  7. char name[200] = {0};
  8. sprintf(name, "%d.jpg", 1);
  9. printf("DataLen = %d\r\n", nDataLen);
  10. ////////设备下载的图片一般会含有16个字节头需要去除//////////////
  11. if(nDownload == 0)
  12. {
  13. pData += 16;
  14. nDataLen -= 16;
  15. }
  16. FILE *file = fopen(name, "ab+");
  17. if (file)
  18. {
  19. fwrite(pData, 1, nDataLen, file);
  20. fclose(file);
  21. }
  22. nDownload++;
  23. }
  24. else if (ESXSDK_MEDIA_DOWN_RECORD_FILE == nDataType)
  25. {
  26. printf("OnRecordDownloadResult[%d][%s]\r\n", hMedia, nDataLen >= 0 ? "Success" : "Failed");
  27. }
  28. else if(ESXSDK_MEDIA_ON_PLAY_STATE == nDataType)
  29. {
  30. printf("Media[hMedia:%ld][ESXSDK_MEDIA_ON_PLAY_STATE:%d][EMediaChnState:%d]\r\n", hMedia, nDataLen);
  31. if (nDataLen == EState_Media_DataEnd)
  32. {
  33. nDownload = 0;
  34. printf("OnRecordDownloadResult Complete!\r\n");
  35. }
  36. }
  37. else
  38. {
  39. printf("Media[hMedia:%ld][Len:%d][Type:%d]\r\n", hMedia, nDataLen, nDataType);
  40. }
  41. return 0;
  42. }
  43. int TestDownloadByName()
  44. {
  45. printf("%s\r\n", __FUNCTION__);
  46. XSDK_HANDLE hPlayer = 0;
  47. char c = 0;
  48. do
  49. {
  50. switch(c)
  51. {
  52. case 's':
  53. {
  54. if (hPlayer)
  55. {
  56. XSDK_MediaStop(hPlayer);
  57. hPlayer = 0;
  58. }
  59. if(!bFindFile)
  60. {
  61. printf("No file!\r\n");
  62. break;
  63. }
  64. SXMediaRecordByFileReq param = {0};
  65. param.nChannel = 0;
  66. param.pMediaCallback = Test_DownloadByNameCallBack;
  67. strcpy(param.sBeginTime, info.sBeginTime);
  68. strcpy(param.sEndTime, info.sEndTime);
  69. strcpy(param.sFileName, info.sFileName);
  70. hPlayer = XSDK_MediaRecordDownloadByName(g_hDevice, &param, 0, 4000);
  71. }
  72. break;
  73. case 't':
  74. {
  75. XSDK_MediaStop(hPlayer);
  76. hPlayer = 0;
  77. }
  78. break;
  79. }
  80. }while((c = getchar()) != 'q');
  81. if (hPlayer)
  82. {
  83. XSDK_MediaStop(hPlayer);
  84. hPlayer = 0;
  85. }
  86. return 0;
  87. }