Ошибка OSStatus -12769?

Итак, я пытался использовать AVAssetExportSession для обрезки квадратного видео. Но почему-то я продолжаю получать эту ошибку:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x1a03be70 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x1a04c5e0 "The operation couldn’t be completed. (OSStatus error -12769.)", NSLocalizedFailureReason=An unknown error occurred (-12769)}

На сайте Apple я узнал, что -11800 — неизвестная ошибка, а как насчет OSStatus error -12769? Я искал везде в Интернете, и я не видел ни одного вопроса/проблемы, связанной с этим кодом ошибки. Пожалуйста помоги. Спасибо!

Мой код здесь:

AVAsset *asset = [[AVURLAsset alloc]initWithURL:self.originalVidUrl options:nil];
AVAssetTrack *clipVideoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
if (clipVideoTrack.naturalSize.width==clipVideoTrack.naturalSize.height) {
    NSLog(@"Square video");
    NSArray *presets = [AVAssetExportSession exportPresetsCompatibleWithAsset:asset];
    if ([presets containsObject:AVAssetExportPresetHighestQuality]) {
        self.exportSession = [[AVAssetExportSession alloc]initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
        self.exportSession.outputURL = [NSURL fileURLWithPath: self.tmpVidPath];
        self.exportSession.outputFileType = AVFileTypeMPEG4;
        CMTime start = ...
        CMTime duration = ...
        CMTimeRange range = CMTimeRangeMake(start, duration);
        self.exportSession.timeRange = range;
        [self.exportSession exportAsynchronouslyWithCompletionHandler:^{
            switch ([self.exportSession status]) {
                case AVAssetExportSessionStatusFailed:
                    NSLog(@"%@",self.exportSession.error);
                    break;
                case AVAssetExportSessionStatusCancelled:
                    NSLog(@"Export canceled");
                    break;
                default:
                    NSLog(@"Export Success, File Saved.");
                    break;
            }
        }];
    }
}

P.S. этот код работает для видео, снятых с помощью собственного приложения камеры (т. е. неквадратных/необработанных видео).


person ddolce    schedule 04.07.2014    source источник


Ответы (1)


Я думаю, что нашел решение, но я понятия не имею, почему и как оно сработало.

Просто измените имя пресета с AVAssetExportPresetHighestQuality на AVAssetExportPreset1280x720, и все готово!

person ddolce    schedule 11.07.2014
comment
Мне нужно сохранить исходное разрешение видео. Любая идея исправить это иначе? - person Xys; 01.06.2017