В моем приложении я рендерину видео, сгенерированное из изображений, которые я извлекаю из фотографий пользователей.Я установил AVAssetwriter с AVAssetwriterInput имеет AVAssetWriterInputPixelBufferAdaptor.Я могу преобразовать объекты ALAsset, которые я извлекаю из библиотеки пользователей, в CVPixelBuffers и добавить их в видео, которое затем сохраняется как mp4.Добавление всех изображений к видео выполняется в фоновом потоке, который отправляет уведомление в основной поток каждый кадр, поэтому интерфейс может быть обновлен.Все это хорошо работает, и я получаю полезный файл Movie из приложения.
Моя проблема сейчас заключается в том, что, когда пользователь входит в другое приложение, после повторной активации статус ALAssetWriter меняется на «сбой», и я не могу добавить больше изображений в файл фильма.Сначала я подумал, что, возможно, придется завершить текущую сессию на устройстве записи и заново открыть новую, как только приложение снова станет активным, но, похоже, это не помогает.
Мне было просто интересно, каков будет общий подход, когда я хочу, чтобы пользователь входил в другие приложения.Лучшее решение было бы, если бы рендеринг мог продолжаться в фоновом режиме.Я полагаю, мне нужен фоновый поток из UIApplication.Но сейчас я был бы рад, если бы рендеринг мог просто продолжиться после возобновления работы моего приложения.
Я не буду сейчас публиковать какой-либо код, потому что это действительно много, и мой вопрос, возможно, является концептуальным.Если вам нужно увидеть код, я выложу его.
Редактировать 1: протестировано на iOS 4.3 и iOS 5. Я видел фоновый рендеринг в других приложениях, таких как iTimelapse, но я не уверен, какие платформы они используют.
Edit2: Iтеперь есть информация члена яблочного devforum, что AVAssetWriter не работает в фоновом режиме.Так есть ли еще какие-нибудь фреймворки, способные рендерить быстрые видеоролики?