有没有办法将来自有线线路输入的音频直接路由到 AirPods?
目前,我正在创建一个.playAndRecord
音频会话。已配对 AirPods。后来,与AVAudioEngine
我将输入设备直接连接到输出设备。
engine.connect(
engine.inputNode,
to: engine.outputNode,
format: engine.inputNode.inputFormat(forBus: 0)
)
效果很好,我可以直接在耳朵里听到 AirPods 麦克风发出的现场(!)声音。 ???? 但随后我连接了线路输入电缆,不幸的是,它也覆盖了线路输入的输出(不过,我可以很好地读取计量电平)。如果我连接 AirPods,那么输入和输出都会更改为 AirPods。
有没有办法将输出设备重新路由到AirPods,但保持输入设备不变?
更新:我尝试使用手动设置输入端口(线路输入)setPreferredInput
,但一旦选择输入,输出也会被调整(到有线设备)。
更新:我尝试用AVRoutePickerView https://developer.apple.com/documentation/avkit/avroutepickerview and MPVolumeView https://developer.apple.com/documentation/mediaplayer/mpvolumeview,但都产生了相同的结果。如果我选择一个新的输出,输入也会被修改。
UPDATE: AudioBus https://audiob.us/app 就是这样做的,我可以将有线耳机设置为输入,将 AirPods 设置为输出,效果非常好。所以这绝对是可能的,我只是不知道该使用什么API。实际上,AudioBus 都无法将音频共享给两套 AirPods。
是的! ???? 但是,它仅在使用以下命令创建音频会话时才有效allowBluetoothA2DP
选项(根据@RobNapierabove https://stackoverflow.com/questions/71006555/route-live-audio-from-line-in-to-airpods#comment125554621_71006555)。它是一个仅输出的配置文件,因此它不路由来自蓝牙设备的输入 at all.
A2DP 是一种立体声、仅输出配置文件,适用于更高带宽的音频用例,例如音乐播放。如果您将应用程序的音频会话配置为使用 A2DP 端口,系统会自动路由到 A2DP 端口。ambient
, soloAmbient
, or playback
类别。
从 iOS 10.0 开始,使用playAndRecord
类别还可以允许将输出路由到配对的蓝牙 A2DP 设备。要启用此行为,请在设置音频会话的类别时传递此类别选项。
你可以让它与一个简单的声音管理器一起工作,如下所示。
class Sound {
...
private var session: AVAudioSession {
AVAudioSession.sharedInstance()
}
private let engine = AVAudioEngine()
init() {
setupAudioSession()
}
func setupAudioSession() {
do {
try session.setCategory(
.playAndRecord,
options: [
.allowBluetoothA2DP, // ????
.allowAirPlay
]
)
try session.setActive(true)
} catch {
print("Could not configure and activate session. \(error)")
}
}
func start() {
engine.connect(
engine.inputNode,
to: engine.outputNode,
format: engine.inputNode.inputFormat(forBus: 0)
)
do {
try engine.start()
} catch {
print("Could not start engine. \(error)")
}
}
...
}
如果你放一个MPVolumeView https://developer.apple.com/documentation/mediaplayer/mpvolumeview用户界面上的某个位置,然后您可以显式选择到蓝牙设备(及更多设备)的路由。但我想即使没有,您也可以通过简单地物理连接/断开设备本身来更改路线。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)