我有一个使用AVFoundation录制音频和视频的应用程序 . 我想在我的应用程序中录制音频时继续从其他应用程序(或系统)播放任何音频,但是当将输入添加到会话时,来自其他应用程序的已播放音频会被神奇地静音 .
相应的代码如下所示:
// set up audio device
if(m_audioenabled) {
print("Audio enabled")
if self.m_audioDevice != nil {
do {
let audioinput = try AVCaptureDeviceInput(device: self.m_audioDevice!)
if self.m_session.canAddInput(audioinput) {
self.m_session.addInput(audioinput)
}
} catch _ {
print("failed adding audio capture device as input to capture session")
}
}
m_audioDataOutput = AVCaptureAudioDataOutput()
m_audioDataOutput?.setSampleBufferDelegate(self, queue: self.m_captureSessionQueueAudio)
if self.m_session.canAddOutput(m_audioDataOutput!){
self.m_session.addOutput(m_audioDataOutput!)
}
}
如果我注释掉对canAddInput(...)的调用,音频会继续播放,当我调用它时,音频播放会被静音 .
我该如何禁用该行为?
请注意,迁移到另一个Audio-API不是一个选项 .
1 回答
听起来你的
AVAudioSession
是不可混合的(默认情况下,我认为) . 在设置AVCaptureSession
之前尝试激活可混合音频会话: