gpt4 book ai didi

ios - 如何设置 iOS 应用程序使用 USB 音频输入和输出到内部扬声器

转载 作者:IT王子 更新时间:2023-10-29 08:21:03 29 4
gpt4 key购买 nike

我有 2 种不同品牌的吉他适配器,它们使用闪电连接器连接到我的 iPhone

当插入适配器 1 时,设备变成了 USB 音频麦克风,它通过我的 iPhone 的扬声器播放声音,因为适配器不包含耳机插孔

当插入适配器 2 时,设备变成 USB 音频麦克风,但通过适配器上的耳机插孔播放声音。

我正在尝试编写一个适用于适配器 2 的应用程序,但我不想将声音输出到适配器的耳机插孔,而是想通过 iPhone 的扬声器发送声音。

下面的代码应该可以工作,但我发现调用 AVAudioSessionPortOverride 时使用 AVAudioSessionPortOverrideSpeaker 选项, Audio Session 的类别是 AVAudioSessionCategoryPlayAndRecord 使音频无论其他设置如何都使用内置扬声器和麦克风,基本上忽略 setPreferredInput

我不太明白适配器 1 如何设法从 USB 音频获取输入并输出到扬声器,但由于上述限制,我的应用程序不能。有人知道解决方案吗?

AVAudioSession* session = [AVAudioSession sharedInstance];
//Set the audioSession category. Needs to be Record or PlayAndRecord to use audioRouteOverride:
[session setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];

//set the audioSession override
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker
error:nil];

//activate the audio session
[session setActive:YES error:nil];

//set input to usb
for (AVAudioSessionPortDescription *destPort in session.availableInputs){
if ([destPort.portType isEqualToString:AVAudioSessionPortUSBAudio]) {
[setPreferredInput:(AVAudioSessionPortDescription *)inPort
error:(nil)outError
session setPreferredInput:destPort error:nil];
}
}

最佳答案

我觉得在USB设备没有音频输出组件的情况下,只能实现USB设备输入,音箱输出。

我找不到任何准确说明这一点的文档,但我的推理如下:

混合和匹配音频设备是通过AVAudioSessionCategoryPlayAndRecord 的通用版本完成的,即所谓的多路由类别(AVAudioSessionCategoryMultiRoute)及其在AVAudioSession 中的文档。 h 表示

  1. 输入仅限于最后一个输入端口。
  2. AVAudioSessionPortBuiltInSpeaker 仅在没有连接其他符合条件的输出时才允许使用

第 1 点不是问题,但第 2 点不允许您的适配器 2 方案。

注意允许适配器 1 和 2 与 USB 输入和线路输出或耳机一起使用。对你有用吗?

关于ios - 如何设置 iOS 应用程序使用 USB 音频输入和输出到内部扬声器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24346707/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com