2

ユーザーがアップロードする前に表示できるように、ボタンに映画のサムネイルを表示しようとしています。AVAssetImageGenerator を使用しています。ここにコード:

AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:[NSURL URLWithString:moviePath] options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;
CMTime thumbTime = CMTimeMakeWithSeconds(0,30);

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){

    switch (result) {
        case AVAssetImageGeneratorSucceeded:
            NSLog(@"Image generator succeeded!");
            [imageButton setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal];
            break;

        case AVAssetImageGeneratorCancelled:
            NSLog(@"Image generator cancelled!");
            NSLog(@"couldn't generate thumbnail, error:%@", error);
            [imageButton setTitle:@"Video attached" forState:UIControlStateNormal];
            break;

        case AVAssetImageGeneratorFailed:
            NSLog(@"Image generator failed!");
            NSLog(@"couldn't generate thumbnail, error:%@", error);
            [imageButton setTitle:@"Video attached" forState:UIControlStateNormal];
            break;

        default:
            break;
    }
};

CGSize maxSize = CGSizeMake(320, 180);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];

上記のコードは次のエラーで失敗します。

couldn't generate thumbnail, error:Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x1f90a080 {NSUnderlyingError=0x1f979aa0 "The operation couldn’t be completed. (OSStatus error -12935.)", NSLocalizedDescription=unknown error}

imagePickeController の moviePath 変数は次のとおりです: /private/var/mobile/Applications/89FD1D5F-B49C-4E6B-B1AA-7F1CF1F3FE83/tmp//trim.eaEKqI.MOV

4

2 に答える 2

1

URL を生成するときは、[NSURL fileURLWithPath:@"yourpath"] を使用しており、[NSURL URLWithString:] を使用していないことを確認してください。

于 2013-04-17T20:05:15.500 に答える