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