2014-01-29 3 views
4

Я разрабатываю приложение, в котором я записываю звук с помощью AVAudioRecorder с форматом .CAF, все в порядке, но проблема в том, что когда я воспроизвожу записанный звук, тогда его воспроизведение в очень малом объеме. Как-то громкость звука будет минимальной. Пробовал так много решений, но не нашел решения для разрешения, если кто-нибудь имеет какие-либо идеи, тогда, пожалуйста, скажите мне, что это очень важно для меня. Ниже приведен код сниппетаГромкость снижается при записи звука с помощью AVAudioRecorder в IOS

AVAudioSession *session = [AVAudioSession sharedInstance]; 
     [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
     [session setActive:YES error:nil]; 
     // Define the recorder setting 
     recordSetting = [[NSMutableDictionary alloc] init]; 

     [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey]; 
     [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
     [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 

     NSArray *pathComponents = [NSArray arrayWithObjects: 
            [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], 
            [NSString stringWithFormat:@"%@.caf",@"temp"], 
            nil]; 
     NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents]; 
     recorder = [[AVAudioRecorder alloc]initWithURL:outputFileURL settings:recordSetting error:nil]; 
     recorder.delegate = self; 
     recorder.meteringEnabled = YES; 
     [recorder recordForDuration:5]; 
     [recorder prepareToRecord]; 
     [recorder record]; 

ответ

8

Хорошо, что вам нужно сделать немного больше, чтобы достичь этого. Во-первых, импорт

#import <AudioToolbox/AudioServices.h> 

then, in your viewDidLoad метод. поместить этот код

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, 
sizeof (audioRouteOverride),&audioRouteOverride); 
+0

Спасибо .. он работает. –

+0

Я просто попробовал это и получил ошибки компоновщика. Я использую Xcode 5.1 неопределенные символы для архитектуры i386: "_AudioSessionSetProperty", ссылочных из: - [ViewController viewDidLoad] в ViewController.o LD: Символ (ы) не найдено для архитектуры i386 лязг: ошибка: команда линкер не удалось с кодом выхода 1 (используйте -v, чтобы увидеть вызов) – vboombatz

5

с использованием новейших SDK будет выглядеть следующим образом:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
4

Swift код:

let recordingSession:AVAudioSession = AVAudioSession.sharedInstance() 
    try! recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions:.DefaultToSpeaker) 
Смежные вопросы