0
AVPlayerでビデオを再生している間に、すべての画像をフレームごとに抽出します。AVPlayerでビデオが再生されている間に、ビデオ内のすべての画像をフレーム単位で抽出したい
たとえば、ビデオが30fpsで、ビデオの再生時間が10秒の場合、ビデオから300枚の画像を取得できるはずです。
現在、私はこのコードを使用して画像抽出しています:
[addPeriodicTimeObserverForInterval self.player:CMTimeMake(1、FPS)キュー:dispatch_get_main_queue()usingBlock:私が使用
^(CMTime time) {
[weakSelf readNextMovieFrame];
}];
(void) readNextMovieFrame {
CMTime outputItemTime = [[self playerItem] currentTime];
CMTime t = [[self playerItem] currentTime];
CMTime d = [[self playerItem] duration];
if ([_output hasNewPixelBufferForItemTime:outputItemTime]) {
CVPixelBufferRef buffer = [_output copyPixelBufferForItemTime:outputItemTime itemTimeForDisplay:nil];
CIImage *image = [CIImage imageWithCVPixelBuffer:buffer];
UIImage *imageUI = [self makeUIImageFromCIImage:image];
[self saveImage];
//CFRelease(sampleBuffer);
CVBufferRelease(buffer);
}
}