thumbnailImageAtTime:现已弃用 - 有什么替代方案?

Jim*_*ney 22 video image deprecated nsnotificationcenter ios7

直到iOS7更新我正在使用...

UIImage *image = [moviePlayer thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
Run Code Online (Sandbox Code Playgroud)

...取得了巨大成功,因此我的应用程序可以显示用户刚拍摄的视频.

我理解这种方法,因为iOS7现已弃用,我需要一个替代方案.我看到有一种方法

- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option
Run Code Online (Sandbox Code Playgroud)

虽然如何从中返回图像,以便将其放在videoReview按钮图像中?

吉姆,提前谢谢.

****编辑通知中心方法后编辑问题***

我用了以下代码 -

[moviePlayer requestThumbnailImagesAtTimes:times timeOption:MPMovieTimeOptionNearestKeyFrame];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerThumbnailImageRequestDidFinishNotification::) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:moviePlayer];
Run Code Online (Sandbox Code Playgroud)

我制作了两个NSNumber对象1和2的NSArray时间.

然后,我尝试使用以下方法捕获通知

-(void)MPMoviePlayerThumbnailImageRequestDidFinishNotification: (NSDictionary*)info{

UIImage *image = [info objectForKey:MPMoviePlayerThumbnailImageKey];
Run Code Online (Sandbox Code Playgroud)

然后继续使用此缩略图图像作为预览的按钮图像....但它不起作用.

如果您从我的编码中看到我出错了,您的帮助将再次受到赞赏.干杯

Jim*_*ney 41

管理使用AVAssetImageGenerator找到一个很好的方法,请参阅下面的代码...

AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:partOneUrl options:nil];
AVAssetImageGenerator *generate1 = [[AVAssetImageGenerator alloc] initWithAsset:asset1];
generate1.appliesPreferredTrackTransform = YES;
NSError *err = NULL;
CMTime time = CMTimeMake(1, 2);
CGImageRef oneRef = [generate1 copyCGImageAtTime:time actualTime:NULL error:&err];
UIImage *one = [[UIImage alloc] initWithCGImage:oneRef];
[_firstImage setImage:one];
_firstImage.contentMode = UIViewContentModeScaleAspectFit;
Run Code Online (Sandbox Code Playgroud)

在头文件中,请导入

#import <AVFoundation/AVFoundation.h>
Run Code Online (Sandbox Code Playgroud)

它工作得很完美,我已经能够从viewDidLoad调用它,这比从viewDidAppear调用已弃用的thumbNailImageAtTime更快.

希望这可以帮助其他遇到同样问题的人.

  • 这完美!我唯一能说的就是改进这个答案就是确保你输入这个`#import <AVFoundation/AVFoundation.h>. (2认同)
  • 要添加到@ JohnRiselvato的注释,您还必须将以下库添加到您的项目中:`CoreMedia`和`AVFoundation`. (2认同)

Gre*_*reg 5

requestThumbnailImagesAtTimes:timeOption:方法将在图像请求完成时发布MPMoviePlayerThumbnailImageRequestDidFinishNotification通知.您需要缩略图的代码应使用订阅此通知NSNotificationCenter,并在收到通知时使用该图像.