【问题标题】:Generating thumbnails from AVPlayer ios从 AVPlayer ios 生成缩略图
【发布时间】:2014-01-12 02:33:59
【问题描述】:

我正在尝试从具有特定时间码的视频生成缩略图。 我正在使用 AVPlayer,这是我写的方法:

-(UIImageView *) generateCommentThumbnail: (CMTime) now{

AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:videoAsset];
gen.appliesPreferredTrackTransform = YES;

NSError *error = nil;
CMTime actualTime;
[gen setRequestedTimeToleranceAfter:kCMTimeZero];
[gen setRequestedTimeToleranceBefore:kCMTimeZero];
CGImageRef image = [gen copyCGImageAtTime:now actualTime:&actualTime error:&error];


UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
UIImageView *iv = [[UIImageView alloc] initWithImage:thumb];

NSLog(@"%f , %f",CMTimeGetSeconds(now),CMTimeGetSeconds(actualTime));

NSLog(@"%@",error);
    return iv;

}

为了获得帧精确的图像,我使用了 setsetRequestedTimeToleranceBefore:kCMTimeZero 和 setRequestedTimeToleranceAfter:kCMTimeZero,但从那时起我大部分时间都会收到此错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "操作无法完成"

虽然,有时它可以正常工作。当我打印时,收到此错误时,“actualTime”我看到它是“inf”或“nan”或只是一个非常大的数字。

以前有人遇到过吗?

谢谢, 约拿单

【问题讨论】:

  • 也许问题来自调用者? “现在”在哪里计算?
  • "Now"就是myPlayer.currentItem.currentTime,就是我要抓图的时间。我还应该提到,在添加 setRequestedTolerance 之前它工作得很好但不够准确
  • 我用MPPlayer生成的缩略图对你来说没问题
  • 谢谢,但我使用 AVPlayer 是为了确保 seekToTime 的准确性。使用 MPPlayer 不够准确。
  • 你有没有让这个工作?

标签: ios avplayer avassetimagegenerator


【解决方案1】:

问题是你创建了这么多实例,所以你需要解除分配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2017-05-22
    • 2013-09-30
    相关资源
    最近更新 更多