为啥我使用 AVAssetImageGenerator 的视频缩略图没有显示?

Posted

技术标签:

【中文标题】为啥我使用 AVAssetImageGenerator 的视频缩略图没有显示?【英文标题】:Why is my thumbnail from video using AVAssetImageGenerator is not showing?为什么我使用 AVAssetImageGenerator 的视频缩略图没有显示? 【发布时间】:2020-08-13 18:29:43 【问题描述】:

我正在从视频中生成缩略图。但是在这个数据中显示错误下面是我的代码:

- (UIImage *)thumbnailImageFromURL:(NSURL *)videoURL 
AVAsset* asset = [AVAsset assetWithURL:videoURL];
AVAssetImageGenerator *generate = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
generate.requestedTimeToleranceAfter = kCMTimeZero;
generate.requestedTimeToleranceBefore = kCMTimeZero;
generate.appliesPreferredTrackTransform = YES;
NSError *error;
CMTime time = asset.duration;
CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:nil error:&error];
UIImage *thumb = [UIImage imageWithCGImage:imgRef];
CGImageRelease(imgRef);
return thumb;

并且这段代码显示错误:

Error Domain=AVFoundationErrorDomain Code=-11832 "Cannot Open" UserInfo=NSLocalizedFailureReason=This media cannot be used., NSLocalizedDescription=Cannot Open, NSUnderlyingError=0x6000001e8d20 Error Domain=NSOSStatusErrorDomain Code=-12431 "(null)"

有人知道原因吗?谢谢。

【问题讨论】:

【参考方案1】:

您可能必须指定actualTime

【讨论】:

你能为我解释一下细节吗? 其实我错了……好久没看Obj-C了。可能是您输入的time,您将其设置为持续时间(即,您已将其设置到最后)。也许尝试开始(即 0)。 我假设它是一个有效的 url。

以上是关于为啥我使用 AVAssetImageGenerator 的视频缩略图没有显示?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能使用 populateViewHolder 覆盖方法?

为啥我不能使用 AsyncMethodCaller?

为啥我的 PHP 会话会死掉?为啥我不能恢复它们?

为啥我无法使用 CAGradientLayer 的掩码

我应该使用 FxCop,为啥?

为啥我不能使用 RijndaelManaged 解密数据?