AVAssetWriter не работает, когда приложение переходит в фоновый режим во время рендеринга

В моем приложении я визуализирую видео, созданное из изображений, которые я извлекаю из фотографий пользователей. Я установил AVAssetwriter с AVAssetwriterInput, у которого есть AVAssetWriterInputPixelBufferAdaptor. Я могу преобразовать объекты ALAsset, которые я извлекаю из пользовательской библиотеки, в CVPixelBuffers и добавить их в видео, которое затем сохраняется как mp4. Добавление всех изображений к видео выполняется в фоновом потоке, который отправляет уведомление в основной поток каждый кадр, чтобы интерфейс можно было обновить. Все это работает хорошо, и я получаю из приложения полезный файл фильма.

Моя проблема теперь в том, что когда пользователь входит в другое приложение, после того, как он снова становится активным, статус ALAssetWriter меняется на «сбой», и я не могу добавлять больше изображений в файл фильма.Сначала я подумал, что мне, возможно, придется завершить текущий сеанс на писателе и снова открыть новый, как только приложение снова станет активным, но это, похоже, не помогает.

Мне просто было интересно, каким будет общий подход, когда я хочу, чтобы пользователь вводил другие приложения. Лучшим решением было бы, если бы рендеринг мог продолжаться в фоновом режиме. Полагаю, мне понадобится фоновый поток из UIApplication. Но пока я был бы счастлив, если бы рендеринг мог продолжиться после возобновления моего приложения.

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

Редактировать 1: Протестировано на iOS 4.3 и iOS 5. Я видел фоновый рендеринг в других приложениях, таких как iTimelapse, но не уверен, какие фреймворки они используют.

Edit2: Теперь у меня есть информация участника форума разработчиков Apple, что AVAssetWriter не работает в фоновом режиме. Так есть ли какие-нибудь другие фреймворки для рендеринга видео в формате quicktime?

5
задан huesforalice 5 October 2011 в 16:58
поделиться