video - 从库中提取的视频的 UIImagePickerController 缩略图

标签 video uiimagepickercontroller thumbnails

我正在尝试获取使用 UIImagePickerController 从库中选取的视频的缩略图。

这是我的代码。如果我使用相机录制视频,我可以获得视频的缩略图。但是,如果我从图书馆挑选视频,我就无法获得缩略图。有人知道为什么吗?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
    {
        NSURL *mediaUrl = [info objectForKey:UIImagePickerControllerMediaURL];

        MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaUrl];
        moviePlayer.shouldAutoplay = NO;
        UIImage *thumbnail = [[moviePlayer thumbnailImageAtTime:0.0 timeOption:MPMovieTimeOptionNearestKeyFrame] retain];
        [imageView setImage:thumbnail];  //imageView is a UIImageView

        [moviePlayer release];
        [thumbnail release];
        [self dismissModalViewControllerAnimated:YES];
    }
}

最佳答案

我有一个半相关的问题,最终放弃使用 MPMoviePlayer 生成缩略图。尝试使用 AVAssetImageGenerator反而。 Apple 讨论使用 AVAssetImageGenerator 创建缩略图 here .这是我自己的示例代码,它抓取了一个缩略图。您将需要包含 AVFoundation 框架。

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidPath options:nil];
AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
gen.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMakeWithSeconds(0.0, 600);
NSError *error = nil;
CMTime actualTime;

CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
CGImageRelease(image);
[gen release];

关于video - 从库中提取的视频的 UIImagePickerController 缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719135/

相关文章:

iphone - UIImagePickerController 编辑允许将 UIImage 锁定为最大尺寸 320x320

iOS 不透明 UIView 具有透明部分

html - 如何在缩略图之间添加空间而不让最后一个缩略图转到下一行?

python - 以编程方式为小视频生成缩略图 CAP

ios - 有没有办法获取我的 iOS 应用程序屏幕截图列表?

java - Xuggler/Java 视频缩略图

c++ - OpenCV videoWriter 编解码器问题

windows - 如何制作视频 "mini/filter-driver"

ios - iPad2 上的 CVOpenGLESTextureCacheCreateTextureFromImage 太慢了,需要将近 30 毫秒,太疯狂了

video - 使用 ffmpeg 进行 GPU 加速视频处理