2011-10-27 5 views
2

J'utilise AVAudioRecorder pour enregistrer du son, mais j'ai un problème. Après avoir appelé la méthode [enregistrement recorder], la valeur de recorder.recording retourne toujours FALSE, de sorte que je ne peux pas arrêter l'enregistrement. J'utilise XCode 4.2 avec iOS 5, mon iPad est ipad 2 sur iOS 5 aussi.iphone: L'enregistrement AVAudioRecorder retourne toujours FALSE

Ceci est mon code:

self.currentFileName = [GlobalRecording newRecordingFileName]; 
    NSURL *url = [NSURL fileURLWithPath:[[GlobalRecording recordingDirectory] stringByAppendingPathComponent:currentFileName]]; 
NSError *err = nil; 

AVAudioRecorder *aRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordingSettings error:&err]; 
if(err){ 
    NSLog(@"could not create a recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

self.startRecordingTime = [NSDate date]; 
recordingLength = 0.0f; 

// setup recorder and start recording 
[aRecorder setDelegate:self]; 
aRecorder.meteringEnabled = YES; 
[aRecorder record]; 

self.recorder = aRecorder; 
BOOL test = recorder.recording; 
[aRecorder release]; 
+2

[aRecorder fiche] retourne le booléen si c'est le succès ou échec. Pouvez-vous vérifier si votre appel record est un succès? – Saran

+0

La valeur renvoyée par [enregistrement enregistrement aRecorder] est FALSE. Cela signifie que ce n'est pas un succès. mon code est-il faux? – haisergeant

+0

Quelqu'un peut-il m'aider, s'il vous plaît? – haisergeant

Répondre

0

Voyez-vous aussi un délai lorsque vous invoquez la méthode d'enregistrement? Je vois un problème lors de l'utilisation iOS5 sur le matériel iPhone4 où la méthode d'enregistrement a un délai de 3-4 secondes et parfois ne parviendra pas à démarrer l'enregistrement. J'appelle prepareToRecord comme recommandé avec le même problème.

Ce n'est pas un problème sur iOS4/iPhone4 ou iOS5/iPhone4S ... il semble donc y avoir un problème lors de l'exécution du nouveau système d'exploitation sur un matériel plus ancien.

+0

Aucune résolution à ce sujet? J'ai le même problème avec les mêmes versions de périphériques/logiciels. –

3

essayez d'utiliser AVAudioSession après [audiorecord prepareToRecord]

NSError *err = nil; 
audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

// route to speaker 
UInt32 ASRoute = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(ASRoute), &ASRoute); 

if (err) 
{ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
} 

[audioSession setActive:YES error:&err]; 
0

Une session audio est l'intermédiaire entre votre application et iOS utilisé pour configurer le comportement audio de votre application. Au lancement, votre application reçoit automatiquement une session audio singleton.

donc activer votre session avant de commencer l'enregistrement

Swift 3,0

let session = AVAudioSession.sharedInstance() 
     do { 
      try session.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     } catch let error as NSError { 
      print("could not set session category") 
      print(error.localizedDescription) 
     } 
     do { 
      try session.setActive(true) 
     } catch let error as NSError 
     { 
      print("could not make session active") 
      print(error.localizedDescription) 
     } 
self.recorder.record() // recorder is my AVAudioRecorder 
Questions connexes