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

Я видел этот вопрос много раз в разных формах, как здесь, так и на других форумах. Некоторые вопросы получают ответы, некоторые нет. Есть несколько, где ответчик или автор утверждают, что имели успех. Я реализовал примеры из тех, которые претендуют на успех, но пока не увидели таких же результатов.

Я могу успешно использовать AVAssetWriter (и AVAssetWriterInputPixelBufferAdaptor) для одновременной записи данных изображения и аудиоданных, когда буферы семплов получены из AVCaptureSession. Однако, если у меня есть CGImageRef, которые были сгенерированы каким-либо другим способом, и я собираю CVPixelBufferRef «с нуля», метод appendPixelBuffer: withPresentationTime класса AVAssetWriterInputPixelBufferAdaptor завершается успешно для нескольких последующих кадров, а затем завершается сбоем для всех последующих кадров. Полученный файл фильма, конечно, недействителен.

Вы можете увидеть мой пример кода по адресу: http://pastebin.com/FCJZJmMi

Изображения действительны и проверяются путем их отображения в окне отладки (см. Строки 50-53). Приложение было протестировано с помощью инструментов, и использование памяти низкое в течение всего времени работы приложения. Он не получает никаких предупреждений памяти.

Насколько я могу судить, я следовал документации, которая доступна. Почему код примера не работает? Что нужно сделать, чтобы это исправить?

Если кто-то успешно заставил AVAssetWriterInputPixelBufferAdaptor работать со своими собственными изображениями, пожалуйста, включите.

Ответы [ 2 ]

9 голосов
/ 22 ноября 2012

Создайте фильм с серией изображений, используя AVAssetWriter из примера - https://github.com/caferrara/img-to-video

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

Есть две вещи, которые требовались для этой работы.

Если вы отлаживаете свой собственный AVAssetWriterInputPixelBufferAdaptor, будьте осторожны, чтобы не пропустить CMTime, а также убедиться, что вы никогда не повторяете CMTime (используйте ВСЕГДА только один кадр за раз)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...