如何从应用程序的目录中的视频中抓取单帧?

如何从应用程序的目录中的视频中抓取单帧?

问题描述:

如何使用UIImageView来显示.mov文件可见框架,例如可见的预览框架。取景器或任何YouTube视频等如何从应用程序的目录中的视频中抓取单帧?

我希望能够从保存到应用程序库目录的.mov文件中获得预览帧,因此它们不会是AVAssets。

AVFoundation中的AVAssetImageGenerator可用于在专辑和本地应用程序目录中加载视频。

这里是一个辅助方法,将在任何给定的时间间隔返回从视频URL(应用程序内部或外部)的图像:

+ (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]; 

    NSAssert(thumbnailImageRef, @"CGImageRef shall never be nil."); 

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

    return thumbnailImage; 
} 
+0

的表现如何将是基于一个UISliders快速设置图像价值翻译成视频时间间隔?例如50x50图像视图。 – jarryd

+1

@ Helium3资产管理器框架非常快。如果将它与一些智能缓存机制和性能调整相结合,例如每n秒只加载1个缩略图,那么您就是黄金。 – memmons

+0

也不要在urlstring之前添加file:// – jarryd