导出视频资产时出现未知异常

Unknown exception when exporting video asset

我有以下代码可以从照片中导出视频数据:

if (asset.mediaType == PHAssetMediaTypeVideo)
{
    [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
        exportSession.outputFileType = AVFileTypeQuickTimeMovie;
        [exportSession exportAsynchronouslyWithCompletionHandler:^{
            [[SharedManager sharedInstance] insertAttachment:exportSession.outputURL forEvent:event];
        }];
    }];
}

此代码在 [exportSession export...] 行中引发了一个无法识别的异常(断点被禁用)。 ExportSession 有效,但在日志中显示 outputFileType = (null),因此我必须手动设置它。

我可以看到视频的URL,类似file://private.mobile.....MOV,它是用相机拍摄的,并存储在资产目录中(我可以用照片观看)。它有 2 秒的长度。

请帮帮我。如何使用照片导出视频文件?

P.S.: Exporting of images using PHImageManager works perfectly fine.

好的,我找到问题了。 文档中没有说,但是需要手动设置outputURL。因此需要以下代码和平(来自这个答案):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *outputURL = paths[0];
NSFileManager *manager = [NSFileManager defaultManager];
[manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil];
outputURL = [outputURL stringByAppendingPathComponent:@"output.mov"];
// Remove Existing File
[manager removeItemAtPath:outputURL error:nil];
exportSession.outputURL = [NSURL fileURLWithPath:outputURL];