2016-06-23 8 views
2

PHImageManagerからビデオを選択したときにAVPlayerItemUIImageNSDataに変換するような簡単なタスクを達成しようとしています。 UIImageはこのように書きに対しAVPlayerItemをNSDataに変換します

PHVideoRequestOptions *videoRequestOptions = [[PHVideoRequestOptions alloc] init]; 
videoRequestOptions.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic; 
videoRequestOptions.version = PHVideoRequestOptionsVersionOriginal; 

[[PHImageManager defaultManager] requestPlayerItemForVideo:asset options:videoRequestOptions resultHandler:^(AVPlayerItem *item, NSDictionary *info) 
      { 
       //? 
      }]; 

[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFit options:imageRequestOptions resultHandler:^(UIImage *result, NSDictionary *info) 
{ 
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(result)]; //<==THIS 
} 
+0

これにはどのような解決策がありますか? – Aziz

+0

@Aziz naah私はしませんでした。私は別の何かを使わなければならなかった。 –

+0

私は解決策を見つけました。 – Aziz

答えて

1

ソリューションはNSDataのを作成し、その後、AVPlayerItem資産からURLを取得するには何がデータにビデオを変換するUIImagePNGRepresentationと同等であるかもしれませんそのURLから:

PHAsset *asset = ... 
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init]; 
[[PHImageManager defaultManager] requestPlayerItemForVideo:asset options:options resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) { 
       NSURL *fileURL = [(AVURLAsset *)playerItem.asset URL]; 
       NSData *videoData = [NSData dataWithContentsOfURL:fileURL]; 
       NSLog(@"tmpData Size: %lu",tmpData.length); 
}]; 

と別の方法を使用することです.... 'requestAVAssetForVideo資産' を

PHFetchOptions *fetchOption = [[PHFetchOptions alloc]init]; 
if ([fetchOption respondsToSelector:@selector(setFetchLimit:)]) { 
    [fetchOption setFetchLimit:1]; 
} 
PHAsset *asset = [PHAsset fetchAssetsWithLocalIdentifiers:@[@"<Video-localIdentifier>"] options:fetchOption].firstObject; 
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc]init]; 
options.version = PHVideoRequestOptionsVersionOriginal; 
options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic; 

[[PHImageManager defaultManager] requestAVAssetForVideo:asset 
               options:options 
              resultHandler: 
^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { 
    AVURLAsset *urlAsset = (AVURLAsset *)asset; 
    NSData *videoData = [NSData dataWithContentsOfURL:urlAsset.URL]; 

    if (videoData) { 
     NSLog(@"videoData Size: %lu", videoData.length); 
    } 

}]; 
+0

それらを取り戻す...? –

関連する問題