如何从应用程序的目录中的视频中抓取单帧?
问题描述:
如何使用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;
}
的表现如何将是基于一个UISliders快速设置图像价值翻译成视频时间间隔?例如50x50图像视图。 – jarryd
@ Helium3资产管理器框架非常快。如果将它与一些智能缓存机制和性能调整相结合,例如每n秒只加载1个缩略图,那么您就是黄金。 – memmons
也不要在urlstring之前添加file:// – jarryd