AVAssetExportSession输出文件

AVAssetExportSession输出文件应该如何? 我试图从一个ALAsset项目压缩video,它不起作用。 我猜输出文件与它有关。

这里是我使用的代码:

NSString *destinationPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie"]; [self convertVideoToLowQualityWithInputURL:asset.defaultRepresentation.url outputURL:[NSURL URLWithString:destinationPath]]; - (void)convertVideoToLowQualityWithInputURL:(NSURL*)inputURL outputURL:(NSURL*)outputURL { if([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithContentsOfURL:outputURL encoding: 0 error:Nil]]) [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil]; AVURLAsset *assetAV = [AVURLAsset URLAssetWithURL:inputURL options:nil]; NSLog(@"url string from asset: %@", assetAV.URL); NSLog(@"output url: %@", [outputURL absoluteString]); [[NSFileManager defaultManager] createFileAtPath:[outputURL path] contents:nil attributes:nil]; NSLog(@"duration: %lld", assetAV.duration.value); //it logs a valid value, so it's all good so far AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:assetAV presetName:AVAssetExportPresetLowQuality]; exportSession.outputURL = outputURL; exportSession.outputFileType = AVFileTypeQuickTimeMovie; [exportSession exportAsynchronouslyWithCompletionHandler:^(void) { if (exportSession.status == AVAssetExportSessionStatusCompleted) { NSLog(@"success"); } else { NSLog(@"error: %@", [exportSession error]); //error: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x2023b720 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x2023bb70 "The operation couldn't be completed. (OSStatus error -12780.)", NSLocalizedFailureReason=An unknown error occurred (-12780)} } }]; } 

有人可以帮帮我吗?

更新:

find解决scheme。 正如我以为问题是输出文件,所以这里是生成一个有效的代码:

  NSUInteger count = 0; NSString *filePath = nil; do { NSString *extension = ( NSString *)UTTypeCopyPreferredTagWithClass(( CFStringRef)AVFileTypeQuickTimeMovie, kUTTagClassFilenameExtension); NSString *fileNameNoExtension = [[asset.defaultRepresentation.url URLByDeletingPathExtension] lastPathComponent]; NSString *fileName = [NSString stringWithFormat:@"%@-%@-%u",fileNameNoExtension , AVAssetExportPresetLowQuality, count]; filePath = NSTemporaryDirectory(); filePath = [filePath stringByAppendingPathComponent:fileName]; filePath = [filePath stringByAppendingPathExtension:extension]; count++; } while ([[NSFileManager defaultManager] fileExistsAtPath:filePath]); NSURL *outputURL = [NSURL fileURLWithPath:filePath]; 

你的问题是[NSURL URLWithString:destinationPath],只有这一点。 您需要像在解决scheme中那样使用[NSURL fileURLWithPath:xxx]。 发布这只是为了澄清这是唯一的问题。