【问题标题】:Recording Audio on iOS Without Stopping Music Playback在 iOS 上录制音频而不停止音乐播放
【发布时间】:2014-03-29 21:49:00
【问题描述】:

使用AVAudioSession 录制音频时,音乐应用或其他应用的音频播放会停止。这在音频会话文档中有所描述:

AVAudioSessionCategoryRecord

用于录制音频;此类别使播放音频静音。

有没有办法改变这种行为并执行以下操作之一?

1) 继续播放其他应用的音频,并让手机录制正在播放的音频。

2) 简短录制完成后恢复其他应用的音频。当音频中断开始或结束时,应用程序可以响应通知。其他应用接收这些通知是否必须执行特定操作?

【问题讨论】:

    标签: ios objective-c avaudiosession


    【解决方案1】:

    经过 24 小时的勤奋搜索和拼凑,这出奇的简单:

    let session = AVAudioSession.sharedInstance()
    session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.mixWithOthers, .allowBluetoothA2DP])
    

    对于仍在寻找如何做到这一点的人来说就是这样。

    【讨论】:

      【解决方案2】:

      你可以使用

      Obj-C

      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
      withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
      

      斯威夫特

      let audioSession = AVAudioSession.sharedInstance()
              do {
                  try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord,
                                               with: AVAudioSessionCategoryOptions.mixWithOthers)
              } catch let error as NSError {
                  print("audioSession error: \(error.localizedDescription)")
              }
      

      【讨论】:

        【解决方案3】:

        1) AVAudioSession 不可能。您所能做的就是检查[[AVAudioSession sharedInstance] isOtherAudioPlaying] 并询问用户是否要停止音乐流式传输。

        2) 当 iPod 状态改变时,应用程序无法接收任何通知,我们甚至无法观察 isOtherAudioPlaying 属性...我在我的项目中使用的解决方案:添加一个 NSTimer 并每秒检查一次 [[AVAudioSession sharedInstance] isOtherAudioPlaying] BOOL 值。

        【讨论】:

        • Snapchat 刚刚实现了这个功能,这样你就可以录制在后台播放的任何音频。肯定有办法做到这一点,我只是不知道怎么做。
        • @Oren 是的......我正在检查所有网站,但没有他们描述 snapchat 和潜望镜工作的原因和方式没有中断和连续录制视频......没有找到解决方案here too
        猜你喜欢
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多