UIImagepickercontroller:转换为低质量video错误

我从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]; 

我使用以下代码来获得低质量的video

  - (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); } }]; } 

我只使用大文件时出现以下错误。 因为当我使用小尺寸video文件时,我没有收到任何错误。

 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} 

上面的代码完美无缺。 唯一的变化是inputURL。

在我将inputURL更改为fileURLWithPath之后:

  NSURL *inputURL = [NSURL fileURLWithPath:inputurlstring]; 

现在它完美无缺。

而不是这个

 [info objectForKey:UIImagePickerControllerMediaURL]; 

使用

 NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL]; 

AVAssetLibrary只能通过其reference url访问您的video。