2012-03-23 9 views
9

Moja aplikacja wykonuje pewne przetwarzanie iw pewnym momencie musi wywołać AVAssetExportSession.Uruchamianie AVAssetExportSession w tle

Jeśli sesja już się rozpoczęła, a następnie pobieram aplikację w tle, wszystko kończy się normalnie. Jeśli jednak wyświetlę aplikację w tle przed wywołaniem exportAsynchronouslyWithCompletionHandler. Otrzymuję ten błąd:

AVAssetExportSessionStatusFailed Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x1e550db0 {NSLocalizedFailureReason=An unknown error occurred (-12985), NSUnderlyingError=0x1e574910 "The operation couldn’t be completed. (OSStatus error -12985.)", NSLocalizedDescription=The operation could not be completed}

Czy to możliwe, aby rozpocząć się AVAssetExportSession w tle?

+0

Nie mogę uruchomić go w tle. Nawet jeśli sesja zostanie uruchomiona przed przejściem w tło, zostanie natychmiast przerwana. Czy używasz _backgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{..., aby uruchomić go w tle? – eddy

+0

@eddy Tak, używam czegoś takiego – Dex

+0

Mam ten sam problem. Czy istnieje jakieś rozwiązanie? –

Odpowiedz

5

W rzeczywistości nie jest to możliwe, ponieważ nie można rozpocząć nowego wątku w tle. Jeśli chcesz robić wiele rzeczy w tle, będziesz musiał uruchomić je wszystkie asynchronicznie tuż przed tłem aplikacji.

4

Możesz uruchomić AVAssetExportSession w tle. Jedyne ograniczenia w pracy z tłem w AVFoundation używają AVVideoCompositions lub AVMutableVideoCompositions. AVVideoCompositions używają GPU, a GPU nie może być używane w tle.

+0

Nie eksportuję dźwięku w tle, czy masz próbkę lub łącze? –

-1

znalazłem rozwiązanie, które działa dla dźwięku, nie próbowałem wideo

Jeśli zaktualizować „Tryby tle” ustawienie w możliwościach projektu obejmuje Audio. Pozwoli to na eksport.

Służy do odtwarzania muzyki w tle.

+0

I * think * iOS 8 może nawet teraz umożliwić przetwarzanie GPU również w tle. – Dex

+0

To działa na IOS 7 i 8, nie testowałem na wcześniejszych wersjach –

+0

Z pewnością nie, kiedy otworzyłem to pytanie;) Co za ból! – Dex