iOS视频录制、压缩导出、取帧
首发博客:标哥的技术博客
关注公众号:iOS开发技术分享
概述
花了点时间研究了一下常用的视频获取、录制、压缩并导出、保存到相册、取帧图功能,分享给大家了!相信阅读完本篇文章,会对你有很大的帮助的!
记得关注微博、公众号哦,请到文章末尾跳转!
本篇文章研究几下以个功能:
- 视频录制
- 从相册选择视频
- 保存视频到相册
- 获取视频帧图
- 压缩并导出视频
- 解决iOS8上录视频引起的偏移bug
需要真机测试,才能录制视频!
效果图
视频录制
首先,我们弹出系统的视频录制界面,也就是UIImagePickerController控制器来实现,但是我们需要验证用户授权,只有有录制视频的权限,才能继续往下。
我们还需要判断UIImagePickerControllerSourceTypeCamera是否支持,比如模拟器就不支持,当然真机是否有不支持的并不知道,不过更安全的写法是要这么写的。视频录制可以设置录制的视频的质量,也就是分辨率的高低,通过videoQuality属性来设置。我们还可以设置录制视频的最大时长,通过videoMaximumDuration属性设置,比如这里设置为5分钟。
// 7.0
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authStatus == AVAuthorizationStatusRestricted|| authStatus == AVAuthorizationStatusDenied) {NSLog(@"摄像头已被禁用,您可在设置应用程序中进行开启");return;
}if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {UIImagePickerController *picker = [[UIImagePickerController alloc] init];picker.delegate = self;picker.allowsEditing = YES;picker.sourceType = UIImagePickerControllerSourceTypeCamera;picker.videoQuality = UIImagePickerControllerQualityType640x480; //录像质量picker.videoMaximumDuration = 5 * 60.0f; // 限制视频录制最多不超过5分钟picker.mediaTypes = @[(NSString *)kUTTypeMovie];[self presentViewController:picker animated:YES completion:NULL];self.shouldAsync = YES;
} else {NSLog(@"手机不支持摄像");
}
然后实现代理,就可以拿到录制的视频了。
从相册选择视频
从相册选择视频与弹出录制视频的代码差不多,只是sourceType不一样而已。我们一样要求先判断权限,用户是否授权,若不允许,就没有办法了。
指定sourceType为UIImagePickerControllerSourceTypeSavedPhotosAlbum就是获取保存到相册中的media。我们还要指定mediaTypes,只需要设置为kUTTypeMovie就可以了。
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if</
发布评论