如何防止使用 AVFoundation 录制视频中断当前正在播放的任何全局音频(Swift)?

Posted

技术标签:

【中文标题】如何防止使用 AVFoundation 录制视频中断当前正在播放的任何全局音频(Swift)?【英文标题】:How can I prevent video recording with AVFoundation from interrupting any global audio that is currently playing (Swift)? 【发布时间】:2019-01-02 16:32:42 【问题描述】:

我已在我的应用程序中成功实现了有效且有效的 AVFoundation 视频录制功能。也就是说,任何正在播放的音频,例如每当视频录制开始时,后台播放的 Apple Music 或 YouTube 视频就会中断/立即暂停。

我的问题是:录制视频时,如何让全局播放的音频继续播放而不会中断?

【问题讨论】:

【参考方案1】:

我可以通过将答案 here 改编为 Swift 来做到这一点。

我这样做是为了防止我的应用中的无声教程视频中断任何当前正在播放的音频。使用setCategory(_:mode:options:) method 将 AVAudiosession 类别设置为“环境”似乎是这里的关键。

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 录制视频中断当前正在播放的任何全局音频(Swift)?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVFoundation / QTKit 一次录制多个视频

使用具有自定义尺寸的 AVFoundation 录制视频? [复制]

在avfoundation中录制视频时可以缩放吗?

使用 AVFoundation 框架(AVCaptureSession)在 iPhone 中录制视频?

在 iOS 中使用 AVFoundation 切换相机后视频录制不起作用

Swift IOS 使用 AVFoundation 录制视频和音频