0

次のコードを使用して、指定されたパスのビデオから画像を取得します。

- (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time {
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
    NSParameterAssert(asset);
    AVAssetImageGenerator *assetImageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    assetImageGenerator.appliesPreferredTrackTransform = YES;
    assetImageGenerator.apertureMode = AVAssetImageGeneratorApertureModeEncodedPixels;

    CGImageRef thumbnailImageRef = NULL;
    CFTimeInterval thumbnailImageTime = time;
    NSError *thumbnailImageGenerationError = nil;
    thumbnailImageRef = [assetImageGenerator copyCGImageAtTime:CMTimeMake(thumbnailImageTime, 60) actualTime:NULL error:&thumbnailImageGenerationError];

    if (!thumbnailImageRef)
        NSLog(@"thumbnailImageGenerationError %@", thumbnailImageGenerationError);

    UIImage *thumbnailImage = thumbnailImageRef ? [[UIImage alloc] initWithCGImage:thumbnailImageRef]  : nil;
    previewImage = thumbnailImage;

    return thumbnailImage;
}

ただし、これは NSDocumentDirectory に保存されたビデオでは機能しません。NSURL を使用して NSDocumentDIrectory にアクセスできませんか? 代替手段がない場合。主なアイデアは、ドキュメント ディレクトリに保存された画像のサムネイルを表示し、後でサーバーにアップロードできるようにすることです。これは、一時ディレクトリにすることもできます。

4

1 に答える 1

0

NSURL *outputURL = [[NSURL alloc] initFileURLWithPath: path]; を使用すると機能しました。

于 2012-09-10T17:30:32.773 に答える