iOS: Как да коригирам рамки с половин размер, запазвайки филм с AVAssetWriter

Пиша филмов файл с AVAssetWriter и AVAssetWriterInputPixelBufferAdaptor.

CGImage, който се използва за изграждане на CVPixelBuffer, изглежда нормално (както е показано на екрана), изходният филм показва входното изображение, компресирано в горната половина на рамката. Всички ширини, височини и bytes_per_row са идентични (за CGImage, настройките на AVAssetWriter и настройките на CVPixelBuffer).

Какво може да причинява този вид проблем?


person mdl    schedule 04.02.2011    source източник


Отговори (1)


Проблемът идва от факта, че когато предоставяте настройки на AVAssetWriterInputPixelBufferAdaptor за използване при конфигуриране на CVPixelBufferPool за генериране на CVPixelBuffers, CVPixelBufferPool очевидно използва настройките като заявка, а не като действителна настройка. CVPixelBuffer, който получавате, може да има различна конфигурация. Това може да е грешка в кода на Apple, не съм сигурен.

Във всеки случай можете да прочетете действителните байтове на ред с помощта на CVPixelBufferGetBytesPerRow(CVPixelBuffer) и съответно да коригирате кода си. Работи за мен!

person mdl    schedule 18.02.2011