2012-03-23 1 views
9

내 응용 프로그램이 일부 처리를 수행하며 어느 시점에서 AVAssetExportSession을 호출해야합니다.백그라운드에서 AVAssetExportSession 시작

세션이 이미 시작된 상태에서 앱을 배경으로 설정하면 모든 것이 정상적으로 완료됩니다. 그러나 exportAsynchronouslyWithCompletionHandler을 호출하기 전에 앱을 배경으로 사용하면됩니다. 백그라운드에서 AVAssetExportSession을 시작하는

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}

가 가능 :이 오류가?

+0

전혀 백그라운드에서 실행할 수 없습니다. 백그라운드로 들어가기 전에 세션이 시작 되더라도 즉시 중단됩니다. _backgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler :^{... 백그라운드에서 실행되도록하려면 사용하고 있습니까? – eddy

+0

@eddy 예 그와 같은 것을 사용하고 있습니다. – Dex

+0

동일한 문제가 있습니다. 어떤 해결책이 있습니까? –

답변

5

실제로 백그라운드에서 새 스레드를 시작할 수 없기 때문에 실제로는 불가능합니다. 백그라운드에서 많은 일을하고 싶다면 앱 배경 직전에 모든 것을 비동기 적으로 시작해야합니다.

4

백그라운드에서 AVAssetExportSession을 시작할 수 있습니다. 백그라운드에서 작업을 수행하는 데 AVFoundation의 유일한 제한은 AVVideoCompositions 또는 AVMutableVideoCompositions입니다. AVVideoCompositions이 GPU를 사용하고 있으며 GPU를 백그라운드에서 사용할 수 없습니다.

+0

백그라운드에서 오디오를 내보내는 데 실패합니다. 샘플 또는 링크가 있습니까? –

-1

나는 오디오 작동하는 솔루션을 발견, 나는

오디오를 포함하는 프로젝트의 기능으로 설정하여 "배경 모드"를 업데이트하면 비디오

을 시도하지 않았습니다. 그것은 수출을 허용합니다.

배경 음악을 재생하기위한 것입니다.

+0

I think * iOS 8은 GPU 처리가 백그라운드에서 수행되도록 허용 할 수도 있습니다. – Dex

+0

이것은 IOS 7뿐만 아니라 8에서 작동합니다. 이전 버전에서 테스트하지 않았습니다 –

+0

이 질문을 열었을 때 분명히하지 않았습니다;) 정말 고통 스러웠습니다! – Dex