我尝试使用AVAudioSession
和AVAudioPlayer
分别录制和播放声音,但音量非常低。
我尝试将AVAudioPlayer
的音量值设置为1.0或更高,但没有多大帮助。
录制可以播放的声音的其他选项可能是什么?
答案 0 :(得分:25)
此代码对您有用:
#import <AudioToolbox/AudioServices.h>
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),&audioRouteOverride);
会增加音量。代码的功能是将普通声音转换为iPhone上的扬声器声音。这就是使用kAudioSessionOverrideAudioRoute_Speaker的原因。
答案 1 :(得分:23)
从iOS7开始,您可以直接使用AVAudioSession解决此问题
overrideOutputAudioPort方法与AudioSessionSetProperty
相同NSError *setOverrideError;
NSError *setCategoryError;
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&setCategoryError];
if(setCategoryError){
NSLog(@"%@", [setCategoryError description]);
}
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&setOverrideError];
if(setOverrideError){
NSLog(@"%@", [setOverrideError description]);
}
答案 2 :(得分:4)
Swift版本:
import AVFoundation
var overrideError : NSError?
if AVAudioSession.sharedInstance().overrideOutputAudioPort(.Speaker, error: &error){
}else{
print("error in overrideOutputAudioPort " + overrideError!.localizedDescription)
}
斯威夫特2:
do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
} catch {
}
答案 3 :(得分:1)
以下代码为我解决了这个问题:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
UInt32 doChangeDefault = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefault), &doChangeDefault);
答案 4 :(得分:0)
MAN,试试这个。
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
if (![session setCategory:AVAudioSessionCategoryPlayback
withOptions:kAudioSessionOverrideAudioRoute_Speaker
error:&setCategoryError]) {
// handle error
}
NSError *error;
NSData * data = [NSData dataWithContentsOfURL:self.playlet.urlSound];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data fileTypeHint:@"aac" error:&error];
self.audioPlayer.delegate = self;
if (error)
NSLog(@"Error: %@",
[error localizedDescription]);
else
[_audioPlayer play];
答案 5 :(得分:0)
设置此项 [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&amp; setOverrideError]; 这个对我有用。