【问题标题】:AVAudioSession configuration to record and play with othersAVAudioSession 配置用于录制和与他人一起播放
【发布时间】:2018-07-30 15:39:09
【问题描述】:

我想配置 AVAudioSession,以便我可以录制带音频的视频,还可以从音乐应用(或任何其他产生声音的应用,通常是互联网收音机应用)播放音乐

我这样配置会话:

try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, with: .mixWithOthers)
try? AVAudioSession.sharedInstance().setActive(true, with: .notifyOthersOnDeactivation)

当我的录音应用程序运行时,我可以开始播放音乐应用程序中的音频并录制视频(也可以录制音频)。到目前为止还不错。

现在,我将我的录音应用置于后台。音乐应用程序继续播放。没事。但是,当我的应用程序从背景音乐应用程序返回时停止播放。我希望它继续下去。所以它在拍摄视频时基本上表现为内置相机应用程序。有没有办法告诉系统我希望其他应用继续播放?

【问题讨论】:

    标签: ios avfoundation


    【解决方案1】:

    我几乎遇到了类似的问题,而且我一两天的时间几乎都没有解决这个问题。

    就我而言,我使用AVCaptureSession 进行视频/音频录制,它具有名为automaticallyConfiguresApplicationAudioSession 的属性。根据 Apple 文档

    automaticallyConfiguresApplicationAudioSession:一个布尔值,指示捕获会话是否自动更改 应用共享音频会话中的设置。

    该属性的值默认为true,导致捕获 session 自动配置应用的共享 AVAudioSession 最佳录音实例

    所以如果我们手动设置AVAudioSession,我们应该将此属性设置为false,如下所示,

    captureSession.automaticallyConfiguresApplicationAudioSession = false;
    

    将此属性设置为false 并手动设置适当的AVAudioSession 类别已经解决了我的问题!希望它对您的情况也有帮助!

    对您的代码的更多观察

    • 不需要.notifyOthersOnDeactivation 标志来激活音频 session 此标志仅在停用音频会话时使用。即当您在setActive(_:options:) 实例方法的beActive 参数中传递false 的值时。所以下面的代码适用于活动会话 try? AVAudioSession.sharedInstance().setActive(true)
    • 默认情况下,AVAudioSessionCategoryPlayAndRecord 类别领先 到非常低音量的背景声音。如果要正常音量,需要使用.defaultToSpeaker.mixWithOthers选项,如下所示,

      try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.mixWithOthers, .defaultToSpeaker])

    好的!那么我认为如果您正确完成了所有其他事情,它现在可以正常工作。

    注意**我创建了一个工作示例项目供您参考,您可以在GitHub Here找到它

    【讨论】:

    • 出色的答案,所以automaticallyConfiguresApplicationAudioSession 是您处理AVCaptureSession 中断其他应用程序的方式!关于您的示例项目:我不确定提问者是否使用AVCaptureMovieFileOutput,但您知道如何摆脱切换回应用程序时出现的“录制停止”错误吗?
    • 我现在正在测试这个答案。到目前为止,它可以工作,除了有小暂停,大约 1 秒内,当录制应用程序从后台转到前台时,音乐暂停,然后播放继续。
    • @JurajAntas 这似乎是一个已知问题。您可以参考以下链接,stackoverflow.com/questions/35496563/…
    • 多次调用这个.defaultToSpeaker选项会导致系统背景音乐死掉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2014-08-09
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多