AVPlayer問題記録

1052 ワード

1,スクリーンショットの問題:copyPixelBufferForItemTimeによるスクリーンショットの失敗処理:
Player再生前にAVPlayerItemVideoOutputを初期化して追加する必要があります
スクリーンショットコード
    CMTime itemTime = self.player.currentItem.currentTime;
    //  AVPlayerItemVideoOutput  Buffer  
    CVPixelBufferRef pixelBuffer = [self.videoOutPut copyPixelBufferForItemTime:itemTime itemTimeForDisplay:nil];
    CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
    CIContext *temporaryContext = [CIContext contextWithOptions:nil];
    CGImageRef videoImage = [temporaryContext
                             createCGImage:ciImage
                             fromRect:CGRectMake(0, 0,
                                                 CVPixelBufferGetWidth(pixelBuffer),
                                                 CVPixelBufferGetHeight(pixelBuffer))];
    
    // 
    UIImage *currentImage = [UIImage imageWithCGImage:videoImage];
    if (!currentImage) {
    // show msg
        return;
    }
    CGImageRelease(videoImage);
    // 
    [self saveImage:currentImage];