gpt4 book ai didi

ios - AVAudioSession 操纵声音输出

转载 作者:行者123 更新时间:2023-12-02 14:35:12 27 4
gpt4 key购买 nike

我使用 AVSoundSession 来配置声音,并使用 AVAudioPlayer 来播放不同的声音。我搜索了很多,但没有找到任何东西。如何操作输出源?

我的 SoundManager 中需要一个方法,可以在手机扬声器和扬声器之间切换输出。

success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker
error:&error];

使用此功能,我可以将声音传送到扬声器,但没有方法将其移动到手机扬声器。有人可以帮我吗?

最佳答案

所以,我找到了操纵声音输出的解决方案。

您可以使用AVAudioSession初始化声音设置

类似这样的事情:

session = [AVAudioSession sharedInstance];

BOOL success;
NSError* error;

success = [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

if (!success) NSLog(@"AVAudioSession error setting category:%@",error);
success = [session setMode:AVAudioSessionModeVoiceChat error:&error];

if (!success) NSLog(@"AVAudioSession error setting mode:%@",error);

success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];

[session setPreferredOutputNumberOfChannels:0 error:nil];
if (!success) NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);

success = [session setActive:YES error:&error];
if (!success) NSLog(@"AVAudioSession error activating: %@",error);
else NSLog(@"audioSession active");

[session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];

您设置不覆盖输出端口。并且您的应用程序使用默认扬声器播放。据我了解,AVAudioSessionModeVoiceChat 模式使用手机扬声器。这正是我的 SIP 调用者应用程序所需要的。

然后您可以使用

覆盖输出端口
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];

我是这样做的:

- (void) loudSpeakerOn:(BOOL)isLoudSpeaker{
[session setActive:NO error:nil];

BOOL success;
NSError* error;

success = [session overrideOutputAudioPort:isLoudSpeaker?AVAudioSessionPortOverrideSpeaker:AVAudioSessionPortOverrideNone error:&error];

if (!success) NSLog(@"AVAudioSession error setting category:%@",error);

[session setActive:YES error:nil];
}

关于ios - AVAudioSession 操纵声音输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133772/

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