如何防止使用 AVFoundation 录制的视频中断当前正在播放的任何全局音频 (Swift)?
How can I prevent video recording with AVFoundation from interrupting any global audio that is currently playing (Swift)?
我已经在我的应用程序中成功实现了有效且有效的 AVFoundation 视频录制功能。也就是说,任何正在播放的音频,例如每当视频录制开始时,在后台播放的 Apple Music 或 YouTube 视频就会中断/立即暂停。
我的问题是:如何让全局播放的音频在录制视频时不间断地继续播放?
我可以通过将答案 here 修改为 Swift 来做到这一点。
我这样做是为了防止我的应用程序中的无声教程视频中断任何当前正在播放的音频。使用 setCategory(_:mode:options:) method 将 AVAudioSession 类别设置为 "ambient" 似乎是这里的关键。
Apple seems to suggest 在应用程序 didFinishLaunchingWithOptions 方法中使用此方法,但我认为他们的示例是针对音频应用程序的。所以根据你的需要,你可能想把它放在那里。
这是修改后的代码,我将其放在显示视频的视图控制器中:
import AVFoundation
...
override func viewDidLoad() {
super.viewDidLoad()
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.ambient, mode: .default, options: .mixWithOthers)
} catch {
print(error.localizedDescription)
}
}
我已经在我的应用程序中成功实现了有效且有效的 AVFoundation 视频录制功能。也就是说,任何正在播放的音频,例如每当视频录制开始时,在后台播放的 Apple Music 或 YouTube 视频就会中断/立即暂停。
我的问题是:如何让全局播放的音频在录制视频时不间断地继续播放?
我可以通过将答案 here 修改为 Swift 来做到这一点。
我这样做是为了防止我的应用程序中的无声教程视频中断任何当前正在播放的音频。使用 setCategory(_:mode:options:) method 将 AVAudioSession 类别设置为 "ambient" 似乎是这里的关键。
Apple seems to suggest 在应用程序 didFinishLaunchingWithOptions 方法中使用此方法,但我认为他们的示例是针对音频应用程序的。所以根据你的需要,你可能想把它放在那里。
这是修改后的代码,我将其放在显示视频的视图控制器中:
import AVFoundation
...
override func viewDidLoad() {
super.viewDidLoad()
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.ambient, mode: .default, options: .mixWithOthers)
} catch {
print(error.localizedDescription)
}
}