Я видел этот вопрос много раз в разных формах, как здесь, так и на других форумах. Некоторые вопросы получают ответы, некоторые нет. Есть несколько, где ответчик или автор утверждают, что имели успех. Я реализовал примеры из тех, которые претендуют на успех, но пока не увидели таких же результатов.
Я могу успешно использовать AVAssetWriter (и AVAssetWriterInputPixelBufferAdaptor) для одновременной записи данных изображения и аудиоданных, когда буферы семплов получены из AVCaptureSession. Однако, если у меня есть CGImageRef, которые были сгенерированы каким-либо другим способом, и я собираю CVPixelBufferRef «с нуля», метод appendPixelBuffer: withPresentationTime класса AVAssetWriterInputPixelBufferAdaptor завершается успешно для нескольких последующих кадров, а затем завершается сбоем для всех последующих кадров. Полученный файл фильма, конечно, недействителен.
Вы можете увидеть мой пример кода по адресу: http://pastebin.com/FCJZJmMi
Изображения действительны и проверяются путем их отображения в окне отладки (см. Строки 50-53). Приложение было протестировано с помощью инструментов, и использование памяти низкое в течение всего времени работы приложения. Он не получает никаких предупреждений памяти.
Насколько я могу судить, я следовал документации, которая доступна. Почему код примера не работает? Что нужно сделать, чтобы это исправить?
Если кто-то успешно заставил AVAssetWriterInputPixelBufferAdaptor работать со своими собственными изображениями, пожалуйста, включите.