2010-03-15 6 views
2

Je suis en train d'enregistrer en utilisant le microphone iphones: Ceci est mon code:L'opération n'a pas pu être terminée. AVAudioRecorder SDK iPhone

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

// the path to write file 
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"testing.mp3"]; 




NSURL *url = [NSURL fileURLWithPath:appFile isDirectory:NO]; 

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys: 
          [NSNumber numberWithFloat: 44100.0],     AVSampleRateKey, 
          [NSNumber numberWithInt: kAudioFormatMPEGLayer3], AVFormatIDKey, 
          [NSNumber numberWithInt: 1],       AVNumberOfChannelsKey, 
          [NSNumber numberWithInt: AVAudioQualityLow],   AVEncoderAudioQualityKey, 
          nil]; 

NSError *error; 

recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error]; 

if ([recorder prepareToRecord] == YES){ 
    [recorder record]; 
}else { 
    int errorCode = CFSwapInt32HostToBig ([error code]); 
    NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode); 

} 

NSLog(@"BOOL = %d", (int)recorder.recording); 

Ceci est l'erreur que je reçois:

Operation could not be completed. (OSStatus error 1718449215.) 

Et je ne peux pas comprendre pourquoi ce doesn ne fonctionne pas, comme beaucoup du code que j'ai reçu d'un site Web.

Jonathan

+0

pour une raison quelconque, il ne s'initialise pas. En faisant 'if (enregistreur) {NSLog: @" Oui "; } 'n'écrit pas oui dans le journal. –

Répondre

5

Votre problème est kAudioFormatMPEGLayer3

Malheureusement vous ne pouvez pas encoder le son sur l'iPhone au format mp3. Actuellement, le meilleur format pour l'audio compressé est kAudioFormatAppleIMA4. (oui, il y a aussi kAudioFormatMPEG4AAC - encore mieux, mais cela ne fonctionne que sur simulateur, mais pas sur l'appareil). Notez également qu'il peut y avoir des problèmes avec le décodage du fichier kAudioFormatAppleIMA4 enregistré sur d'autres systèmes, par ex. Windows, le format lpcm si simple peut être plus pratique pour les petits fichiers.

+0

Merci, Cela a finalement fonctionné :) Savez-vous comment enregistrer en mémoire, de sorte que je puisse lire l'enregistrement en arrière, avec comme un retard de 3 secondes? –

+1

Pas avec AVAudioRecorder. Vous devez utiliser le service de file d'attente audio à cette fin. Voir http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005343-CH1-SW1 et parlez ici exemple (http://developer.apple.com/iphone/library/samplecode/SpeakHere/) – Vladimir

+0

aac fonctionne maintenant sous ios 4.0 pour 3GS et 3.2 Touch. [Voir ici pour les codecs audio pris en charge par Apple] (https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html%23//apple_ref/doc/uid/TP40009767- CH2) – Rob