gpt4 book ai didi

ios - AVAssetImageGenerator 无法复制图像

转载 作者:行者123 更新时间:2023-12-01 15:21:05 25 4
gpt4 key购买 nike

我正在使用 AVAssetImageGenerator从视频的最后一帧创建图像。这通常工作正常,但偶尔 copyCGImageAtTime因错误而失败

NSLocalizedDescription = "Cannot Open";
NSLocalizedFailureReason = "This media cannot be used.";
NSUnderlyingError = "Error Domain=NSOSStatusErrorDomain Code=-12431";

我正在验证 AVAsset 不是 nil 并且我直接从 Assets 中提取 CMTime,所以我不明白为什么这种情况不断发生。这仅在尝试获取最后一帧时发生,如果我使用 kCMTimeZero相反,它似乎有效。
- (void)getLastFrameFromAsset:(AVAsset *)asset completionHandler:(void (^)(UIImage *image))completion
{
NSAssert(asset, @"Tried to generate last frame from nil asset");
AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
gen.requestedTimeToleranceBefore = kCMTimeZero;
gen.requestedTimeToleranceAfter = kCMTimeZero;
gen.appliesPreferredTrackTransform = YES;
CMTime time = [asset duration];
NSError *error = nil;
CMTime actualTime;

CGImageRef imageRef = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
UIImage *image = [[UIImage alloc] initWithCGImage:imageRef];
NSAssert(image, @"Failed at generating image from asset's last frame");
completion(image);
CGImageRelease(imageRef);
}

This似乎是相关的,但它并没有解决我的问题。

最佳答案

无法保证您的 Assets 的视频轨道存在于 [asset duration] .它的持续时间可以短于整个 Assets 。由于您将容差设置为 kCMTimeZero唯一可能的解决办法是失败。

编辑:澄清一下,当您的 Assets 的音轨略长于视频轨道时,就会出现问题。

关于ios - AVAssetImageGenerator 无法复制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com