gpt4 book ai didi

iphone - AVAudioRecorder 和 AVAudioPlayer - 内部扬声器的声音输出,如何更改?

转载 作者:行者123 更新时间:2023-12-03 18:34:38 28 4
gpt4 key购买 nike

我在使用 AVAudioRecorder 和 AVAudioPlayer 时遇到问题。

当我同时使用播放器和录音时(例如,在录音时播放声音),声音来自安静的内部扬声器。我搜索了 stackoverflow,发现的只是这段代码:

UInt32 *audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

但这对我没有帮助:(当我复制粘贴它时,出现错误。如何录制并播放底部的扬声器?

我不使用 SCLister 之类的东西......

提前致谢

最大

最佳答案

这篇文章有点旧了,但这篇文章对我有帮助,我想为将来可能需要它的其他人更新它。顶部发布的代码是正确的 - 它将获取通过手机扬声器播放的安静音频并将其路由到底部的扬声器。代码中有一个小拼写错误,这就是它给出错误的原因。这是解决此问题的正确代码片段:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

确保在设置此选项后、创建音频播放器/录音器之前立即激活 Audio Session :

[[AVAudioSession sharedInstance] setActive:YES error:nil];

最后,如果您要同时播放和录音,您可能还需要设置类别和混音功能。这是整个片段,它将设置类别、启用混合、将音频路由到主扬声器并激活 session 。您只需在应用程序启动后立即执行此操作一次。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

NSLog(@"Mixing: %x", propertySetError); // This should be 0 or there was an issue somewhere

[[AVAudioSession sharedInstance] setActive:YES error:nil];

希望对某人有帮助!

关于iphone - AVAudioRecorder 和 AVAudioPlayer - 内部扬声器的声音输出,如何更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104562/

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