ドキュメントディレクトリに保存されている録画ビデオからサムネイルを生成しています。ビデオは1分以内にする必要があります。録画時間まで、すべてが正常に機能します。録画したビデオからサムネイルを生成しようとすると、何も得られませんでした。同じために2つの方法を使用しました
MPMoviePlayerController を使用する
-(void)generateThumbnail:(NSURL*)assetURL{ if(assetURL){ MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL]; UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; //AT THIS POINT AS I CHECK IT THIS thumbnail contains 0X000000 player = nil; if (thumbnail) { //will use that image to further } else { //here wil doing some intimation } } }
上記のメソッドは実行で終了し、これらのログを取得しました
自動再生: 自動再生を有効にしています 自動再生: 追いつく可能性が高いか、バッファがいっぱいです: 0 [MPAVController] 自動再生: 自動再生をスキップしています。追いつくのに十分なバッファがありません。[MPAVController] Autoplay: 自動再生を有効にする [MPAVController] Autoplay: 自動再生を有効にする [MPAVController] Autoplay: 自動再生をスキップする、無効にする (現在のアイテムの場合: 0、プレーヤー: 1) [MPAVController] Autoplay: 自動再生を有効にする[MPAVController] Autoplay: 自動再生をスキップする、無効 (現在のアイテムの場合: 0、プレーヤーの場合: 1)
AVAssetImageGenerator を使用する
-(void)genrateThumbnailImageFromAsset:(AVAsset*)_assetObject size:(CGSize)size forTime:(CMTime)thumbTime { __weak typeof(self) wself = self; __block UIImage * thumbNailImage = nil; AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:_assetObject]; generator.appliesPreferredTrackTransform=TRUE; AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error) { switch (result) { case AVAssetImageGeneratorSucceeded:{ /*get the generated image*/ thumbNailImage=[UIImage imageWithCGImage:im]; // We finished updating the image. Set the visual UI button to the uploaded image if (thumbNailImage) { //using accordingly } else { //using accordingly } } break; case AVAssetImageGeneratorFailed:{ //using accordingly NSLog(@"%@",[error localizedDescription]); } break; case AVAssetImageGeneratorCancelled:{ //using accordingly NSLog(@"%@",[error localizedDescription]); } break; default: break; } }; generator.maximumSize = size; [generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler]; }
上記では何も得られませんでした....まだ同じものを探しています。