当应用程序处于后台时,我无法让AVAssetExportSession工作。
我的应用程序启用了后台模式“后台获取”。
当调用此UIApplicationDelegate方法时
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 调用I使用AVAssetExportSession导出AVAsset,使用以下方法:
exportAsynchronouslyWithCompletionHandler
然后,我将收到以下错误:
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x147dae560 {Error Domain=NSOSStatusErrorDomain Code=-16980 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-16980), NSLocalizedDescription=The operation could not be completed} 然而,当我有背景模式“音频,空中播放和图片在图片”,出口作品。
这是伟大的,但我们的提交被拒绝,因为我们不播放任何音频在后台。
背景中还有什么其他的视频输出方式吗?
干杯,瑞德
复制的步骤我已经创建了一个示例项目来显示这个问题。
下载网址:http://up.red.to/WKo1MMstzD
发布于 2016-03-24 01:54:44
你的问题:
背景中还有什么其他的视频输出方式吗?
当然,有一些限制。
NSProcessInfo有一组API,用于在应用程序处于后台时请求更多的时间来完成任务。例如:
id activity = [[NSProcessInfo processInfo] beginActivityWithOptions:NSActivityAutomaticTerminationDisabled reason:@"Good Reason"];
[exportSession exportAsynchronouslyWithCompletionHandler:^{
[[NSProcessInfo processInfo] endActivity:activity];
}];这会给你更多的时间。还有其他用于同步操作的API,在这两种情况下,您的应用程序仍然应该为系统做好准备,以免有更多的时间。在WWDC 2015的会议上广泛讨论了这一问题。
您还必须确保您的后台活动没有写入文件系统的受保护部分。确保输出位置设置了正确的NSFileProtection属性,以便即使在设备被锁定时也允许访问。
现在,特别是使用后台提取,您有非常有限的时间来完成您的工作,并调用后台获取完成处理程序。背景获取API将与NSURLSession一起使用,用于调度从应用程序进程中执行的后台下载。在这里使用NSProcessInfo API可能不会为您带来更多的时间,而背景获取API对于编码/导出媒体是非常不合适的。即使是小型媒体文件完成所需的时间也将超过后台获取处理程序的时间限制。
https://stackoverflow.com/questions/36185277
复制相似问题