0
我正在寫一個應用程序,它使用AVKit讀取一個視頻文件,並對每一幀執行一些操作,最後生成一個輸出圖像。AVAssetReaderTrackOutput有時提供空白視頻幀
首先,我將資源加載,與AVURLAssetPreferPreciseDurationAndTimingKey
設置爲YES
,然後我找到的第一個視頻軌道,並創建一個資產讀者,並設置爲kCVPixelFormatType_32BGRA
減壓設置的資產讀卡器輸出 - 根據文檔,這是一個這裏少數允許的值。
然後我打電話copyNextSampleBuffer
在一個循環,並做所產生的CMSampleBufferRef
如下:
CVImageBufferRef movieFrame = CMSampleBufferGetImageBuffer(sampleBuffer);
NSCIImageRep *imageRep = [NSCIImageRep
imageRepWithCIImage:[CIImage imageWithCVImageBuffer:movieFrame]];
NSImage *image = [[NSImage alloc] initWithSize:[imageRep size]];
[image addRepresentation:imageRep];
在大多數情況下,這工作正常。但是,有些視頻會生成偶爾的空白幀,還有一些視頻會爲每個幀留出空白。我在這裏做了明顯錯誤的事嗎?