我正在开发一个iOS 8应用程序,它可以录制视频,使用AVMutableVideoComposition
进行修改,并通过调用exportAsynchronouslyWithCompletionHandler
的AVAssetExportSession
导出结果。
只要应用程序在前台运行,一切都正常。但是,如果用户在导出完成之前按下主页按钮并将应用程序发送到后台,则会引发以下错误:
Error Domain=AVFoundationErrorDomain Code=-11847 "Operation Interrupted"
UserInfo=0x174271c40 {NSUnderlyingError=0x170246c90 "The operation couldn't
be completed. (OSStatus error -12125.)", NSLocalizedRecoverySuggestion=Stop
other operations and try again., NSLocalizedDescription=Operation
Interrupted}
看起来其他人也遇到了与音频相关的相同错误:AVAssetExportSession在后台工作 我尝试了各种方法,比如使用
beginBackgroundTaskWithExpirationHandler
请求更多的执行时间(不起作用,因为在时间耗尽之前导出被中断),将音频添加为应用程序功能的后台模式(不起作用,也许是因为我使用了AVMutableVideoComposition?),在主线程之外的自定义队列中启动导出,但都无济于事。即使在应用程序进入后台时尝试重新启动导出,也会失败。我尝试监听
UIApplicationDidEnterBackgroundNotification
,并在应用程序已经在后台时重新启动导出,但我仍然会得到相同的错误。这个线程中的讨论暗示了这可能是因为
AVMutableVideoComposition
不能在后台使用:
在后台启动AVAssetExportSession
iOS 8仍然如此吗?是否有任何解决方法,或者有谁知道我如何实现所需的功能(即编辑和导出用户刚刚录制的视频,即使他将应用程序发送到后台)?非常感谢任何帮助,我已经花费了很多时间在这个问题上。