如何在iPhone应用程序中录制和播放声音?

| 我尝试使用
AVAudioSession
AVAudioPlayer
分别录制和播放声音,但音量很低。 我尝试将ѭ1volume的音量值设置为1.0或更大,但没有太大帮助。 录制声音足以播放的声音,我还有其他选择吗?     
已邀请:
此代码对您应该有用:
#import <AudioToolbox/AudioServices.h>

    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;                
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,          
                                 sizeof (audioRouteOverride),&audioRouteOverride);  
它将增加音量。该代码的功能是将普通声音转换为iPhone上的扬声器声音。这就是为什么使用kAudioSessionOverrideAudioRoute_Speaker的原因。     
从iOS7开始,您可以直接使用AVAudioSession修复此问题 overlayOutputAudioPort方法的作用与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]);
}
    
迅捷版:
 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 {
        }
    
以下代码为我解决了此问题:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
UInt32 doChangeDefault = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefault), &doChangeDefault);
    
曼,试试这个。
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];
    
只是设置这个 [会话overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker错误:&setOverrideError]; 这个对我有用。     

要回复问题请先登录注册