【问题标题】:getting a poster frame from a video with PhotoKit (iOS8)使用 PhotoKit (iOS8) 从视频中获取海报帧
【发布时间】:2014-10-14 22:30:14
【问题描述】:

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

您可以将此方法用于照片和视频资产 - 对于视频资产,图像请求提供缩略图或海报框架。

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

{ PHImageFileSandboxExtensionTokenKey = "31c0997752ae82ee32953503bd6d9a2436c50fac;00000000;00000000;000000000000001a;com.apple.app-sandbox.read;00000001;01000003;00000000000756cf;/private/var/mobile/Media/DCIM/100APPLE/IMG_0008.MOV"; PHImageFileURLKey = "file:///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

【问题讨论】:

    标签: ios ios8 photokit


    【解决方案1】:

    替换后我得到了它的工作

    CGSize targetSize = PHImageManagerMaximumSize ;
    

    与...

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 2015-11-22
      • 2019-07-24
      • 2022-01-06
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多