MediaPlaybackControl.mm 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. //
  2. // MediaPlaybackControl.m
  3. // FunSDKDemo
  4. //
  5. // Created by wujiangbo on 2018/11/27.
  6. // Copyright © 2018 wujiangbo. All rights reserved.
  7. //
  8. #import "MediaPlaybackControl.h"
  9. #import "NSDate+TimeCategory.h"
  10. @implementation MediaPlaybackControl
  11. {
  12. H264_DVR_FINDINFO Info;
  13. }
  14. #pragma -mark 根据选择的日期调用回放接口
  15. -(void)startPlayBack:(NSDate *)date{
  16. struct H264_DVR_FINDINFO requestInfo;
  17. memset(&requestInfo, 0, sizeof(H264_DVR_FINDINFO));
  18. requestInfo.nChannelN0 = self.channel;
  19. requestInfo.nFileType = 0;
  20. requestInfo.startTime.dwYear = [NSDate getYearFormDate:date];
  21. requestInfo.startTime.dwMonth = [NSDate getMonthFormDate:date];
  22. requestInfo.startTime.dwDay = [NSDate getDayFormDate:date];
  23. requestInfo.startTime.dwHour = 0;
  24. requestInfo.startTime.dwMinute = 0;
  25. requestInfo.startTime.dwSecond = 0;
  26. requestInfo.endTime.dwYear = [NSDate getYearFormDate:date];
  27. requestInfo.endTime.dwMonth = [NSDate getMonthFormDate:date];
  28. requestInfo.endTime.dwDay = [NSDate getDayFormDate:date];
  29. requestInfo.endTime.dwHour = 23;
  30. requestInfo.endTime.dwMinute = 59;
  31. requestInfo.endTime.dwSecond = 59;
  32. [self start:requestInfo];
  33. }
  34. #pragma mark - 开启
  35. -(int)start:(H264_DVR_FINDINFO)findInfo{
  36. Info = findInfo;
  37. return [self start];
  38. }
  39. -(int)start
  40. {
  41. self.player = FUN_MediaNetRecordPlayByTime(self.msgHandle, [self.devID UTF8String], &Info, (__bridge LP_WND_OBJ)self.renderWnd);
  42. //[super start];
  43. return self.player;
  44. }
  45. #pragma mark - 根据传入的日期进行云视频回放(也可以自己设置时间段,这里是播放全天的云视频)
  46. - (void)startPlayCloudVideo:(NSDate*)date {
  47. SDK_SYSTEM_TIME beginTime;
  48. SDK_SYSTEM_TIME endTime;
  49. //下面是播放一整天的云视频,也可以根据想要播放的云视频录像段,自己设置开始和结束时间
  50. beginTime.year = [NSDate getYearFormDate:date];
  51. beginTime.month = [NSDate getMonthFormDate:date];
  52. beginTime.day = [NSDate getDayFormDate:date];
  53. beginTime.hour = [NSDate getHourFormDate:date];
  54. beginTime.minute = [NSDate getMinuteFormDate:date];
  55. beginTime.second = [NSDate getSecondFormDate:date];
  56. endTime.year = [NSDate getYearFormDate:date];
  57. endTime.month = [NSDate getMonthFormDate:date];
  58. endTime.day = [NSDate getDayFormDate:date];
  59. endTime.hour = 23;
  60. endTime.minute = 59;
  61. endTime.second = 59;
  62. time_t ToTime_t(SDK_SYSTEM_TIME *time);
  63. int beginTimeInt = (int)ToTime_t(&beginTime);
  64. time_t ToTime_t(SDK_SYSTEM_TIME *time);
  65. int endTimeInt = (int)ToTime_t(&endTime);
  66. self.player = FUN_MediaCloudRecordPlay(self.msgHandle, SZSTR(self.devID),self.channel, "", beginTimeInt, endTimeInt, (__bridge LP_WND_OBJ)self.renderWnd);
  67. }
  68. #pragma mark - 停止
  69. -(int)stop{
  70. return [super stop];
  71. }
  72. #pragma mark - 暂停
  73. -(int)pause{
  74. return [super pause];
  75. }
  76. #pragma mark - 恢复
  77. -(int)resumue{
  78. return [super resumue];
  79. }
  80. #pragma mark - 清除当前界面图像
  81. -(void)refresh
  82. {
  83. FUN_MediaRefresh(self.msgHandle);
  84. }
  85. #pragma mark - 开始智能快放
  86. -(int)setIntelPlay
  87. {
  88. return Fun_MediaSetIntellPlay(self.player, ((1 << EMSSubType_INVASION | 1 << EMSSubType_STRANDED) & 0x3FFFFFF), 8);
  89. }
  90. #pragma mark - 停止智能快放
  91. -(int)stopIntelPlay
  92. {
  93. return Fun_MediaSetIntellPlay(self.player, ((1 << EMSSubType_INVASION | 1 << EMSSubType_STRANDED) & 0x3FFFFFF), 0);
  94. }
  95. #pragma mark - 拖动时间轴切换播放时间
  96. -(void)seekToTime:(NSInteger)addtime
  97. {
  98. FUN_MediaSeekToTime(self.player, (int)addtime, 0, 0);
  99. }
  100. #pragma mark - 设置播放速度(可设置1倍、2倍 、4倍,对应speed为0、1、2)
  101. -(void)setPlaySpeed:(int)speed
  102. {
  103. FUN_MediaSetPlaySpeed(self.player, speed, 0);
  104. }
  105. #pragma mark FunSDK 结果
  106. -(void)OnFunSDKResult:(NSNumber *)pParam{
  107. NSInteger nAddr = [pParam integerValue];
  108. MsgContent *msg = (MsgContent *)nAddr;
  109. [super OnFunSDKResult:pParam];
  110. switch ( msg->id ) {
  111. #pragma mark 设置播放速度
  112. case EMSG_SET_PLAY_SPEED:{
  113. if(self.playbackDelegate && [self.playbackDelegate respondsToSelector:@selector(setPlaySpeedResult:)])
  114. {
  115. [self.playbackDelegate setPlaySpeedResult:msg->param1];
  116. }
  117. }
  118. break;
  119. default:
  120. break;
  121. }
  122. }
  123. @end