gpt4 book ai didi

ios - 在后台使用 AVAssetExportSession 导出视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:04 49 4
gpt4 key购买 nike

我正在开发一个 iOS 8 应用程序,该应用程序录制视频,使用 AVMutableVideoComposition 对其进行修改,并使用调用 exportAsynchronouslyWithCompletionHandlerAVAssetExportSession 导出结果.

只要应用程序在前台运行,一切都会正常进行。但是,当用户按下主页按钮并在导出完成之前将应用程序发送到后台时,会引发以下错误:

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 working in background

我尝试了各种方法,例如使用 beginBackgroundTaskWithExpirationHandler 请求更多执行时间(不起作用,因为在时间用完之前导出被中断),将音频添加为背景模式应用程序功能(不起作用,可能是因为我使用了 AVMutableVideoComposition?),在主线程外的自定义队列中开始导出,但没有任何效果。

即使在应用程序进入后台时导出尚未完成的情况下尝试重新启动导出也会失败。我尝试收听 UIApplicationDidEnterBackgroundNotification 并在应用程序已在后台后重新启动导出,但我遇到了同样的错误。

这个线程中的讨论暗示这可能是因为 AVMutableVideoComposition 不能在后台使用:

Starting AVAssetExportSession in the Background

iOS 8 仍然如此吗?是否有任何解决方法或有人知道我如何实现所需的功能(编辑和导出用户刚刚录制的视频,即使他将应用程序发送到后台)?

非常感谢任何帮助,我在这个问题上花了很多时间。

最佳答案

iOS 13 测试。导出时播放静音。

Audio Session 应该配置如下:

try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay])
try AVAudioSession.sharedInstance().setActive(true)

需要后台模式。

关于ios - 在后台使用 AVAssetExportSession 导出视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306838/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com