簡體   English   中英

使用PhotoKit(iOS8)從視頻中獲取海報框架

[英]getting a poster frame from a video with PhotoKit (iOS8)

我想從視頻資產中提取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

替換后我就可以工作了

CGSize targetSize = PHImageManagerMaximumSize ;

與...

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

我還沒有看到任何相關文檔,所以可能是iOS8.0.x中的一個錯誤(在撰寫本文時,iOS8.1 beta已可用,但我尚未對其進行測試)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM