UIImagepickercontroller:转换为低质量视频错误
Posted
技术标签:
【中文标题】UIImagepickercontroller:转换为低质量视频错误【英文标题】:UIImagepickercontroller: converting to low quality video error 【发布时间】:2013-02-14 10:42:16 【问题描述】:我从 UIImagepickercontroller 的 didFinishPickingMediaWithInfo
的方法中获取 inputurl [info objectForKey:UIImagePickerControllerMediaURL]
。
NSURL *inputURL = [NSURL URLWithString:inputurlstring];
我从这段代码中给出 outputurl
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *videoPath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"capturedvideo.MOV"];
NSURL *outputURL = [NSURL fileURLWithPath:videoPath];
我使用以下代码获取低质量视频
- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL
outputURL:(NSURL*)outputURL
handler:(void (^)(AVAssetExportSession*))handler
[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
exportSession.outputURL = outputURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
if (exportSession.status == AVAssetExportSessionStatusCompleted)
printf("completed\n");
else
printf("error\n");
NSLog(@"error is %@",exportSession.error);
];
仅使用大文件时出现以下错误。因为当我使用小尺寸视频文件时,我没有收到任何错误。
Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x616d890
NSErrorFailingURLStringKey=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV, NSErrorFailingURLKey=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV, NSLocalizedDescription=unknown error, NSUnderlyingError=0x2d1460 "The operation couldn’t be completed. (OSStatus error -12935.)", NSURL=/private/var/mobile/Applications/EE1E6701-EED0-4830-BD1D-7366680713C0/tmp//trim.7mL7VS.MOV
【问题讨论】:
您要修剪大视频吗?看起来修剪存储在私人文件夹中。 我正在转换为低质量并存储在文档目录@AlbertRenshaw 为什么不直接跳过转换,将 UIImagePickerController 上的 videoQuality 属性设置为 UIImagePickerControllerQualityTypeLow? 仅使用这种 AVFondation 方法我得到的文件大小更小@KasperWelner 可能您的设备空间不足? 【参考方案1】:上面的代码是完美的。唯一的变化是 inputURL。
在我将 inputURL 更改为 fileURLWithPath 之后:
NSURL *inputURL = [NSURL fileURLWithPath:inputurlstring];
现在它可以完美运行了。
【讨论】:
【参考方案2】:而不是这个
[info objectForKey:UIImagePickerControllerMediaURL];
使用
NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL];
AVAssetLibrary
只能通过其reference url
访问您的视频。
【讨论】:
以上是关于UIImagepickercontroller:转换为低质量视频错误的主要内容,如果未能解决你的问题,请参考以下文章
UIImagePickerController、自定义 UIButton 和 AutoLayout
OCMock 模拟 UIImagePickerController