// // Copyright © 2020 dahua. All rights reserved. // #import "LCLivePreviewPresenter+SDKListener.h" #import "UIImageView+Surface.h" #import "LCLivePreviewPresenter+Control.h" @implementation LCLivePreviewPresenter (SDKListener) //videos - (void)onReceiveData:(NSInteger)len Index:(NSInteger)index { NSLog(@""); } - (void)onPlayerResult:(NSString *)code Type:(NSInteger)type Index:(NSInteger)index { // play weakSelf(self); NSLog(@"LIVE_PLAY-CODE:%@,TYPE:%ld", code, type); dispatch_async(dispatch_get_main_queue(), ^{ if (99 == type) { if ([code isEqualToString:@"-1000"]) { //请求超时处理 self.videoManager.isPlay = NO; // [LCProgressHUD showMsg:[NSString stringWithFormat:@"mobile_common_net_fail".lc_T, [code integerValue]]]; [self showErrorBtn]; } else if (![code isEqualToString:@"0"]) { //业务请求失败处理 self.videoManager.isPlay = NO; // [LCProgressHUD showMsg:[NSString stringWithFormat:@"mobile_common_net_fail".lc_T, [code integerValue]]]; [self showErrorBtn]; } else { //成功 } } if (type == 5) { //不处理 if ([code integerValue] == STATE_DHHTTP_KEY_ERROR) { [self showErrorBtn]; if (![self.videoManager.currentPsk isEqualToString:self.videoManager.currentDevice.deviceId]) { //自定义id时先改成默认的设备ID重试 self.videoManager.currentPsk = @""; [self hideErrorBtn]; [self onPlay:nil]; } else { [self showPSKAlert]; } } if ([code integerValue] != 0 && [code integerValue] != STATE_DHHTTP_OK) { [self showErrorBtn]; } } if (type == 0) { self.videoManager.playStatus = [code integerValue]; if ([RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:code]) { dispatch_async(dispatch_get_main_queue(), ^{ }); return; } if ([RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:code]) { dispatch_async(dispatch_get_main_queue(), ^{ }); return; } if ([RTSP_Result_String(STATE_RTSP_KEY_MISMATCH) isEqualToString:code]) { [weakself showErrorBtn]; [weakself showPSKAlert]; } else { [weakself showErrorBtn]; } } }); return; } - (void)onPlayBegan:(NSInteger)index { dispatch_async(dispatch_get_main_queue(), ^{ self.videoManager.playStatus = 1001; [self saveThumbImage]; [self hideVideoLoadImage]; }); } //audio - (void)onTalkResult:(NSString *)error TYPE:(NSInteger)type { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"开启对讲回调error = %@, type = %ld", error, (long)type); weakSelf(self); [LCProgressHUD hideAllHuds:nil]; if (99 == type) { //网络请求失败 dispatch_async(dispatch_get_main_queue(), ^{ weakself.videoManager.isOpenAudioTalk = NO; [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T]; }); return; } if (nil != error && [RTSP_Result_String(STATE_RTSP_DESCRIBE_READY) isEqualToString:error]) { dispatch_async(dispatch_get_main_queue(), ^{ }); return; } if (nil != error && [RTSP_Result_String(STATE_RTSP_PLAY_READY) isEqualToString:error]) { dispatch_async(dispatch_get_main_queue(), ^{ //对讲连接成功建立 self.videoManager.isOpenAudioTalk = YES; [LCProgressHUD showMsg:@"device_mid_open_talk_success".lc_T]; }); return; } dispatch_async(dispatch_get_main_queue(), ^{ [LCProgressHUD showMsg:@"play_module_video_preview_talk_failed".lc_T]; weakself.videoManager.isOpenAudioTalk = NO; }); }); } - (void)saveThumbImage { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryDirectory = [paths objectAtIndex:0]; NSString *myDirectory = [libraryDirectory stringByAppendingPathComponent:@"lechange"]; NSString *picDirectory = [myDirectory stringByAppendingPathComponent:@"picture"]; NSDateFormatter *dataFormat = [[NSDateFormatter alloc] init]; [dataFormat setDateFormat:@"yyyyMMddHHmmss"]; NSString *strDate = [dataFormat stringFromDate:[NSDate date]]; NSString *datePath = [picDirectory stringByAppendingPathComponent:strDate]; NSString *picPath = [datePath stringByAppendingString:@".jpg"]; NSLog(@"test jpg name[%@]\n", picPath); NSFileManager *fileManage = [NSFileManager defaultManager]; NSError *pErr; BOOL isDir; if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) { [fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&pErr]; } if (NO == [fileManage fileExistsAtPath:picDirectory isDirectory:&isDir]) { [fileManage createDirectoryAtPath:picDirectory withIntermediateDirectories:YES attributes:nil error:&pErr]; } [self.playWindow snapShot:picPath]; UIImage *image = [UIImage imageWithContentsOfFile:picPath]; dispatch_async(dispatch_get_main_queue(), ^{ [[UIImageView new] lc_storeImage:image ForDeviceId:self.videoManager.currentDevice.deviceId ChannelId:self.videoManager.currentChannelInfo.channelId]; }); } @end