gpt4 book ai didi

ios - 在 iOS 中使用 AVAudioEngine 的默认音频输出

转载 作者:行者123 更新时间:2023-11-29 01:45:19 27 4
gpt4 key购买 nike

我正在尝试创建一个基本的 iOS 应用程序,让我可以录制音频,然后以不同的速度和音高播放它。

我正在使用 AVAudioPlayer 以较慢或较快的速度播放录制的音频,它按预期工作。声音在我的耳机中播放。

我正在使用 AVAudioEngine 以不同的音高播放录制的音频,除了音频是在我的 Thunderbolt 显示扬声器而不是我的耳机上播放外,它可以正常工作。

我一直在阅读文档以了解此行为,但结果很短。在我的 View Controller 方法 viewDidLoad 中,我按如下方式设置了 Audio Session :

 let session = AVAudioSession.sharedInstance()
session.setCategory(AVAudioSessionCategoryPlayback, error: &error)
session.setActive(true, error: &error)

再往下,我定义了一个函数来触发使用音频引擎的声音,如下所示:

let playerNode = AVAudioPlayerNode()
audioEngine.attachNode(playerNode)

let changePitchNode = AVAudioUnitTimePitch()
changePitchNode.pitch = 1000
audioEngine.attachNode(changePitchNode)

audioEngine.connect(playerNode, to: changePitchNode, format: audioFile.processingFormat)
audioEngine.connect(changePitchNode, to: audioEngine.outputNode, format: audioFile.processingFormat)

playerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
audioEngine.startAndReturnError(nil)
playerNode.play()

audioEngineaudioFile 在类中全局声明。整个项目可以在 https://github.com/KevinSjoberg/pitch-perfect 找到。 .

谁能解释为什么它一直在我的监听扬声器而不是我的耳机上播放声音?

最佳答案

我想通了。发生这种情况的原因是我正在使用 Thunderbolt Display 麦克风录制我的声音。由于某些未知原因,这使得 AVAudioEngine 使用监听扬声器。通过将输入源切换到我的 MBP 的麦克风,一切都按预期进行。

我只是在猜测,但这听起来确实像是一个错误,所以我已经向 Apple 提交了一份报告。

关于ios - 在 iOS 中使用 AVAudioEngine 的默认音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994693/

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