我创建了一个iPhone应用程序来录制我们的声音。当我尝试录制时,我收到以下声明中的错误消息。
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
错误域= NSOSStatusErrorDomain代码= 1718449215“操作无法完成。(OSStatus错误1718449215。)”
如果我尝试在.caf文件中录制,它工作正常。如果我尝试使用.m4a,我收到此错误消息。
请帮我解决。
感谢。
答案 0 :(得分:63)
1718449215是kAudioFormatUnsupportedDataFormatError
错误的四个字符代码的十进制表示。
通常,您可以使用类似的内容从您收到的错误中获取更多信息:
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain
code:my_error_code
userInfo:nil];
NSLog(@"Error: %@", [error description]);
答案 1 :(得分:5)
如果这有助于其他人:我只是遇到了同样的错误,这是因为尝试以错误的格式创建/使用音频文件。我预设了录制内容以创建.caf文件,而是调用文件xxx.wav。
答案 2 :(得分:3)
OSStatus错误代码很痛苦,它们往往过于笼统而无法提供帮助。你试过decode the four-char error code了吗?有时这会有所帮助(有时候你会得到垃圾)。创建并向我们展示一个展示问题的最小代码示例。在这种情况下,我敢打赌,四字符代码是fmt?
。谷歌的数字代码,你应该更聪明。
答案 3 :(得分:3)
当我将文件类型转换为.mp3时,我也遇到了这个问题,而之前我使用的是.caf格式,用AVAudioRecorder录制声音。我再次将文件类型转换为.caf格式&有用。您可以使用以下格式
AAC,PCM,IMA4,ULAW,ILBC
答案 4 :(得分:1)
"的NSDictionary"如果是空的,默认为高质量,如果设置,此值将非常低,您可以尝试取消这些参数:
setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);
setting[AVSampleRateKey] = @(600.0);
setting[AVNumberOfChannelsKey] = @(1);
setting[AVLinearPCMBitDepthKey] = @(8);
答案 5 :(得分:1)
我最喜欢的用于解密OSStatus代码的工具是https://osstatus.com
OSStatus错误1718449215是kAudioConverterErr_FormatNotSupported
,可能表示:
您尝试导出的格式不受支持(请仔细检查输出文件URL的文件扩展名)。
recordSettings
有问题。需要注意的一件事是AVFormatIDKey
的值与输出文件URL的文件扩展名匹配。
答案 6 :(得分:0)
如果您使用c或cpp代码,则可以执行此操作。
char code[4];
*((SInt32*)&code[0]) = error;
答案 7 :(得分:0)
UInt32 code = CFSwapInt32HostToBig(error);
NSLog(@"%4.4s"(char *)&code);