AvSession因Bad_Access_Code失败

时间:2014-09-17 01:58:36

标签: ios objective-c avfoundation avcam

我试图保存包含多个视频的AvAsset并将它们合并为一个视频。 但是当块完成时,该部分会被处理,这给我一个错误。

我的阻止:

-(void)exportDidFinish:(AVAssetExportSession*)session withCompletionBlock:(void(^)(BOOL success))completion {
self.exportSession = nil;

__block id weakSelf = self;
//delete stored pieces
[self.assets enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(AVAsset *asset, NSUInteger idx, BOOL *stop) {

    NSURL *fileURL = nil;
    if ([asset isKindOfClass:AVURLAsset.class])
    {
        AVURLAsset *urlAsset = (AVURLAsset*)asset;
        fileURL = urlAsset.URL;
    }

    if (fileURL)
        [weakSelf removeFile:fileURL];
    NSLog(@"File Url: %@", fileURL);
}];

[self.assets removeAllObjects];
//[self.delegate removeProgress];

if (session.status == AVAssetExportSessionStatusCompleted) {
    NSURL *outputURL = session.outputURL;
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:outputURL]) {
        [library writeVideoAtPathToSavedPhotosAlbum:outputURL completionBlock:^(NSURL *assetURL, NSError *error){
            //delete file from documents after saving to camera roll
            [weakSelf removeFile:outputURL];

            if (error) {
                completion (NO);
            } else {
                completion (YES);
            }
        }];
    }
}
//Upload service
completion(YES);


[self.assets removeAllObjects];
}

这是我收到的确切错误: Completion Block

我想说我在AVFoundation和资产方面有很多经验,但我不知道为什么完成块失败。

可能是什么问题,如果您需要更多信息,请告诉我,我可以更新问题。

1 个答案:

答案 0 :(得分:0)

原来我已将我的IBAction命名为保存按钮,名称为completionBlock,因此它正在调用自身并失败。

更改了名称,现在一切都很好。