iOS: как исправить кадры половинного размера при сохранении фильма с помощью AVAssetWriter - PullRequest
3 голосов
/ 05 февраля 2011

Я пишу файл фильма с помощью AVAssetWriter и AVAssetWriterInputPixelBufferAdaptor.

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

Что может быть причиной такого рода проблем?

1 Ответ

3 голосов
/ 18 февраля 2011

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

В любом случае вы можете прочитать фактические байты на строку, используя CVPixelBufferGetBytesPerRow (CVPixelBuffer), и соответственно скорректировать свой код. Работал на меня!

...