当前位置:
首页 >
iOS开发-UI控件:UIImagePickerController 视频录制操作,视频大小,时间长度
发布时间:2023/12/29
48
豆豆
生活随笔
收集整理的这篇文章主要介绍了
iOS开发-UI控件:UIImagePickerController 视频录制操作,视频大小,时间长度
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
转自: http://www.cnblogs.com/cocoajin/p/3494290.html
简介:
使用 iOS 系统 UIImagePickerController
- 获取视频大小
- 获取视频长度- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view.self.title = @"AVVideo Demo";CGRect theFrame = CGRectMake(10, 15, 130, 20);[self addOpBtnWith:@"pick Video" frame:theFrame action:@selector(pickVideoTaped)];theFrame = CGRectMake(150, 15, 130, 20);[self addOpBtnWith:@"转成mp4" frame:theFrame action:@selector(revoverToMp4)];}#pragma mark action//转换格式为 mp4
- (void)revoverToMp4
{AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:_videoURL options:nil];NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]){AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAssetpresetName:AVAssetExportPresetHighestQuality];NSDateFormatter* formater = [[NSDateFormatter alloc] init];[formater setDateFormat:@"yyyy-MM-dd-HH:mm:ss"];NSString* _mp4Path = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/output-%@.mp4", [formater stringFromDate:[NSDate date]]];exportSession.outputURL = [NSURL fileURLWithPath: _mp4Path];exportSession.shouldOptimizeForNetworkUse = YES;exportSession.outputFileType = AVFileTypeMPEG4;[exportSession exportAsynchronouslyWithCompletionHandler:^{switch ([exportSession status]) {case AVAssetExportSessionStatusFailed:{UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error"message:[[exportSession error] localizedDescription]delegate:nilcancelButtonTitle:@"OK"otherButtonTitles: nil];[alert show];break;}case AVAssetExportSessionStatusCancelled:NSLog(@"Export canceled");break;case AVAssetExportSessionStatusCompleted:NSLog(@"Successful!");NSLog(@"%@",_mp4Path);NSLog(@"file Size %ldk",(long)[self getFileSize:_mp4Path]);break;default:break;}}];}else{UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error"message:@"AVAsset doesn't support mp4 quality"delegate:nilcancelButtonTitle:@"OK"otherButtonTitles: nil];[alert show];}}//弹出视频拍摄- (void)pickVideoTaped
{pickVideo = [[UIImagePickerController alloc]init];pickVideo.sourceType = UIImagePickerControllerSourceTypeCamera;NSArray* availableMedia = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];pickVideo.mediaTypes = [NSArray arrayWithObject:availableMedia[1]];pickVideo.delegate = self;[self presentViewController:pickVideo animated:YES completion:nil];}
#pragma mark - UIImagePickerControllerDelegate//拍照完成代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{NSLog(@"%@",info);_videoURL = info[UIImagePickerControllerMediaURL];NSString * size = [NSString stringWithFormat:@"%ld kb", (long)[self getFileSize:[[_videoURL absoluteString] substringFromIndex:16]]];NSString *length = [NSString stringWithFormat:@"%.0f s", [self getVideoDuration:_videoURL]];NSLog(@"-------------%@%@",size,length);[picker dismissViewControllerAnimated:YES completion:nil];}//取消代理- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{[picker dismissViewControllerAnimated:YES completion:nil];
}//获取视频时间
- (CGFloat) getVideoDuration:(NSURL*) URL
{NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]forKey:AVURLAssetPreferPreciseDurationAndTimingKey];AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:URL options:opts];float second = 0;second = urlAsset.duration.value/urlAsset.duration.timescale;return second;
}//获取视频 大小
- (NSInteger) getFileSize:(NSString*) path
{NSFileManager * filemanager = [[NSFileManager alloc]init];if([filemanager fileExistsAtPath:path]){NSDictionary * attributes = [filemanager attributesOfItemAtPath:path error:nil];NSNumber *theFileSize;if ( (theFileSize = [attributes objectForKey:NSFileSize]) )return [theFileSize intValue]/1024;elsereturn -1;}else{return -1;}
}- (void)addOpBtnWith:(NSString *)name frame:(CGRect)frame action:(SEL)action
{UIButton *aBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];aBtn.frame = frame;[aBtn setTitle:name forState:UIControlStateNormal];[aBtn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:aBtn];
}
总结
以上是生活随笔为你收集整理的iOS开发-UI控件:UIImagePickerController 视频录制操作,视频大小,时间长度的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 恢复硬盘U盘数据好帮手-finaldat
- 下一篇: Hx711称重模块+STM32+Cube