AVAudioSession.setCateogry 没有蓝牙麦克风输入
No bluetooth mic input with AVAudioSession.setCateogry
我正在尝试使用录音机来捕获来自 AirPods Pro 的输入。以下函数执行音频捕获,它适用于内置麦克风,但不适用于 AirPods。这个问题在模拟器和真实设备上都存在。有人可以指出我在这里缺少什么来启用蓝牙捕获吗?谢谢!
func startRecording() {
let recordingSession = AVAudioSession.sharedInstance()
// Then we start recording session with
do {
try recordingSession.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth, .defaultToSpeaker, .allowBluetoothA2DP])
try recordingSession.setActive(true)
} catch {
print("Failed to set up recording session")
}
// Then we say where to save it
let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
// file is named after the date and time of the recording in the .m4a format.
let audioFilename = documentPath.appendingPathComponent("\(Date().toString( dateFormat: "dd-MM-YY_'at'_HH:mm:ss")).m4a")
let settings = [
AVFormatIDKey: Int(kAudioFormatLinearPCM),
AVSampleRateKey: 48000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.record()
recording = true
} catch {
print("Could not start recording")
}
} //end func startRecording
试试这个:
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.prepareToRecord()
audioRecorder.record()
您的问题出在您的选项中:[.allowBluetooth, .defaultToSpeaker, .allowBluetoothA2DP]
。 A2DP 不支持录音,因此当您将设备置于 A2DP 模式时,其麦克风将被禁用。您需要删除 .allowBluetoothA2DP
选项
请注意,当您执行此操作时,它会切换到 HFP 模式(这就是 .allowBluetooth
的实际含义)。这将显着降低音频输出。对于录音机,这可能没问题,但如果您在播放高质量音频的同时尝试从 AirPod 的麦克风录音,则不支持。
我正在尝试使用录音机来捕获来自 AirPods Pro 的输入。以下函数执行音频捕获,它适用于内置麦克风,但不适用于 AirPods。这个问题在模拟器和真实设备上都存在。有人可以指出我在这里缺少什么来启用蓝牙捕获吗?谢谢!
func startRecording() {
let recordingSession = AVAudioSession.sharedInstance()
// Then we start recording session with
do {
try recordingSession.setCategory(.playAndRecord, mode: .default, options: [.allowBluetooth, .defaultToSpeaker, .allowBluetoothA2DP])
try recordingSession.setActive(true)
} catch {
print("Failed to set up recording session")
}
// Then we say where to save it
let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
// file is named after the date and time of the recording in the .m4a format.
let audioFilename = documentPath.appendingPathComponent("\(Date().toString( dateFormat: "dd-MM-YY_'at'_HH:mm:ss")).m4a")
let settings = [
AVFormatIDKey: Int(kAudioFormatLinearPCM),
AVSampleRateKey: 48000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.record()
recording = true
} catch {
print("Could not start recording")
}
} //end func startRecording
试试这个:
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.prepareToRecord()
audioRecorder.record()
您的问题出在您的选项中:[.allowBluetooth, .defaultToSpeaker, .allowBluetoothA2DP]
。 A2DP 不支持录音,因此当您将设备置于 A2DP 模式时,其麦克风将被禁用。您需要删除 .allowBluetoothA2DP
选项
请注意,当您执行此操作时,它会切换到 HFP 模式(这就是 .allowBluetooth
的实际含义)。这将显着降低音频输出。对于录音机,这可能没问题,但如果您在播放高质量音频的同时尝试从 AirPod 的麦克风录音,则不支持。