gpt4 book ai didi

ios - 使用 PhotoKit (iOS8) 从视频中获取海报帧

转载 作者:行者123 更新时间:2023-11-28 21:56:24 24 4
gpt4 key购买 nike

我想从视频资源中提取 UIimage,用作海报。根据 PHImageManager 的文档,我应该能够使用 requestImageForAsset:targetSize:contentMode:options:resultHandler:。引用文档:

You can use this method for both photo and video assets—for a video asset, an image request provides a thumbnail image or poster frame.

虽然这不是我的经验。将 requestImageForAsset:targetSize:contentMode:options:resultHandler: 与视频 Assets 一起使用,回调 block 始终为图像返回 nil 和 nil 错误。返回的信息字典看起来如下(我无法理解)

{
PHImageFileSandboxExtensionTokenKey = "31c0997752ae82ee32953503bd6d9a2436c50fac;00000000;00000000;000000000000001a;com.apple.app-sandbox.read;00000001;01000003;0000 0000000756cf;/private/var/mobile/Media/DCIM/100APPLE/IMG_0008.MOV";
PHImageFileURLKey = "文件:///var/mobile/Media/DCIM/100APPLE/IMG_0008.MOV";
PHImageFileUTIKey = "dyn.ah62d4uv4ge804550";
PHImageResultDeliveredImageFormatKey = 9999;
PHImageResultIsDegradedKey = 0;
PHImageResultIsInCloudKey = 0;
PHImageResultIsPlaceholderKey = 0;
PHImageResultRequestIDKey = 26;
PHImageResultWantedImageFormatKey = 9999;
}

这是我在 PHAsset 类别中编写的方法,用于从下面的视频 PHAsset 中提取图像。有没有人能够做到这一点?

@implementation PHAsset (util)

-(PHImageRequestID)fullSizeImage: (void(^)(UIImage *image, NSError *error)) resultHandler {
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];

PHImageContentMode contentMode = PHImageContentModeAspectFill ;

PHImageManager *imageManager = [PHImageManager defaultManager] ;
CGSize targetSize = PHImageManagerMaximumSize ;
return [imageManager requestImageForAsset:self targetSize:targetSize contentMode:contentMode options:nil resultHandler:^(UIImage *result, NSDictionary *info) {
NSError *error = (NSError*)[info objectForKey:PHImageErrorKey];
if (result == nil) {
NSLog(@"ERROR while fetching fullSizeImage %@, info:\n%@", error, info);
}

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
resultHandler(result, error);
}];
}];
}

@end

最佳答案

替换后我让它工作

CGSize targetSize = PHImageManagerMaximumSize ;

与...

CGSize targetSize = CGSizeMake(self.pixelWidth*ratio, self.pixelHeight*ratio) ;

我还没有看到任何相关文档,所以可能是 iOS8.0.x 中的一个错误(在撰写本文时,iOS8.1 beta 可用,但我尚未对其进行测试)

关于ios - 使用 PhotoKit (iOS8) 从视频中获取海报帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371495/

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