NSURL *url = [NSURLURLWithString:filepath];
self.playerItem = [AVPlayerItemplayerItemWithURL:url];
//问题的关键在这里,不能在播放的时候在去创建 AVPlayerItemVideoOutput对象,不然的话 CVPixelBufferRef pixelBuffer = [self.PlayerItemVideoOutput copyPixelBufferForItemTime:itemTime itemTimeForDisplay:nil]; 创建的buffer就会为空 而无法生成截屏图片
self.PlayerItemVideoOutput = [[AVPlayerItemVideoOutputalloc] init];
[self.playerItemaddOutput:self.PlayerItemVideoOutput];
AVPlayer* player = [[AVPlayeralloc]initWithPlayerItem:self.playerItem];
AVPlayerViewController *playerVC = [[AVPlayerViewControlleralloc]init];
playerVC.showsPlaybackControls =NO;
playerVC.player = player;
//[playerVC setVideoGravity:AVLayerVideoGravityResize];
playerVC.view.frame =CGRectMake(0, 20, ScreenWidth,ScreenWidth*9/16);
[player play];
[self.viewaddSubview:playerVC.view];
- (void)takeaphoto {
CMTime itemTime =self.playerItem.currentTime;
CVPixelBufferRef pixelBuffer = [self.PlayerItemVideoOutputcopyPixelBufferForItemTime:itemTimeitemTimeForDisplay:nil];
NSLog(@"%@",pixelBuffer);//为空
CIImage *ciImage = [CIImageimageWithCVPixelBuffer:pixelBuffer];
CIContext *temporaryContext = [CIContextcontextWithOptions:nil];
CGImageRef videoImage = [temporaryContext
createCGImage:ciImage
fromRect:CGRectMake(0, 0,
CVPixelBufferGetWidth(pixelBuffer),
CVPixelBufferGetHeight(pixelBuffer))];
UIImage *frameImg = [UIImageimageWithCGImage:videoImage];
CGImageRelease(videoImage);
self.imageView.image = frameImg;
}