chr*_*ler 21 audio ios avaudiosession
当我设置:
[[AVAudioSession sharedInstance] setCategory:
AVAudioSessionCategoryPlayAndRecord error:NULL];
Run Code Online (Sandbox Code Playgroud)
...录制和播放工作正常,只是播放音量比我在没有录制和设置PlayAndRecord时播放相同声音时低约60%.
因为我开始录制会话,我需要获得高音量峰值(以检查用户是否在麦克风中吹气).但是没有设置AVAudio..PlayandRecord,我不能在此期间播放任何声音.这就是我实现这个命令的原因.
任何帮助?
谢克斯
chr*_*ler 26
对于遇到相同问题的每个人,将输出重定向到扬声器:
[[AVAudioSession sharedInstance] setCategory:
AVAudioSessionCategoryPlayAndRecord error:NULL];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(audioRouteOverride), &audioRouteOverride);
Run Code Online (Sandbox Code Playgroud)
这样可行.
Luc*_*orr 24
我今天遇到了这个问题,似乎这个答案有点过时了.AudioSessionsSetProperty(...)现已弃用.
以下似乎可以正常工作,通过扬声器提供全音量,但如果在应用运行之前插入音频,则会自动将音频路由到耳机:
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error: nil];
Run Code Online (Sandbox Code Playgroud)
即使插入了耳机,如果您更愿意通过扬声器以音量播放音频,这也适用:
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
Run Code Online (Sandbox Code Playgroud)
小智 14
我发现(参见iOS文档中的清单7-9 )上面提到的覆盖音频路由的解决方案在插入和移除耳机后停止工作.
因此,如果您希望音频路由中的更改在当前音频会话中是永久性的(iOS文档中的清单7-10 ),您可以使用相同的源来设置默认音频路由,而不是使用
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
//Set the general audio session category
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: &setCategoryErr];
//Make the default sound route for the session be to use the speaker
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
//Activate the customized audio session
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
Run Code Online (Sandbox Code Playgroud)
当然要确保链接AudioToolbox框架并使用它导入它
#import <AudioToolbox/AudioServices.h>
Run Code Online (Sandbox Code Playgroud)
小智 5
我今天遇到了这个问题,大多数答案似乎不适用于最近的 iOS 更改。Lucian 上面使用 defaultToSpeaker 选项的回答是正确的,尽管有时在模拟器和设备上的行为似乎仍然不同。对我有帮助的是在一次调用中设置类别、模式和选项,这在 iOS 10+ 中可用,如下所示:
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, mode: AVAudioSessionModeDefault, options: .defaultToSpeaker)
Run Code Online (Sandbox Code Playgroud)
使用此音频一直到最大程度并保持这种状态。
| 归档时间: |
|
| 查看次数: |
9637 次 |
| 最近记录: |