J'ai créé une application iPhone pour enregistrer notre voix. Lorsque j'essaie d'enregistrer, un message d'erreur apparaît dans la déclaration suivante.
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
Domaine d'erreur = Code NSOSStatusErrorDomain = 1718449215 "L'opération n'a pas pu aboutir. (Erreur OSStatus 1718449215.)"
Si j'ai essayé d'enregistrer dans un fichier .caf, cela fonctionne bien. Si j'ai essayé avec .m4a, je reçois ce message d'erreur.
S'il vous plaît aidez-moi à le résoudre.
Merci.
1718449215 est la représentation décimale du code à quatre caractères pour l'erreur kAudioFormatUnsupportedDataFormatError
.
En général, vous pouvez utiliser quelque chose comme ceci pour obtenir plus d'informations sur les erreurs que vous recevez:
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain
code:my_error_code
userInfo:nil];
NSLog(@"Error: %@", [error description]);
Au cas où cela aiderait les autres: je viens d'avoir la même erreur, et cela a été causé en essayant de créer/utiliser des fichiers audio dans un format incorrect. J'avais prédéfini l'enregistrement pour créer un fichier .caf, mais appelé plutôt le fichier xxx.wav.
Les codes d'erreur OSStatus sont pénibles, ils sont souvent trop généraux pour aider. Avez-vous essayé de décoder le code d'erreur à quatre caractères ? Parfois, cela aide (d'autres fois, vous n'obtenez que des déchets). Créez et montrez-nous un exemple de code minimal illustrant le problème. Dans ce cas, je parie que le code à quatre caractères est fmt?
. Google pour le code numérique et vous devriez être plus sage.
J'ai également rencontré ce problème lorsque j'ai converti le type de fichier au format .mp3 alors que j'utilisais auparavant le format .caf pour l'enregistrement audio avec AVAudioRecorder. J'ai encore converti le type de fichier au format.caf et cela fonctionne. Vous pouvez utiliser les formats suivants
AAC, PCM, IMA4, ULAW, ILBC
"NSDictionary" si elle est vide, la valeur par défaut est haute qualité, si vous définissez, cette valeur sera très basse, vous pouvez essayer d'annuler ces paramètres:
setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);
setting[AVSampleRateKey] = @(600.0);
setting[AVNumberOfChannelsKey] = @(1);
setting[AVLinearPCMBitDepthKey] = @(8);
UInt32 code = CFSwapInt32HostToBig(error);
NSLog(@"%4.4s"(char *)&code);
Si vous êtes dans le code c ou cpp, vous pouvez le faire.
char code[4];
*((SInt32*)&code[0]) = error;