【问题标题】:OSStatus error 1718449215OSStatus 错误 1718449215
【发布时间】:2011-05-14 15:08:26
【问题描述】:

我创建了一个 iPhone 应用程序来录制我们的声音。当我尝试记录时,我在以下语句中收到错误消息。


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

Error Domain=NSOSStatusErrorDomain Code=1718449215“操作无法完成。(OSStatus错误1718449215。)”

如果我尝试在 .caf 文件中录制,它工作正常。如果我尝试使用 .m4a,我会收到此错误消息。

请帮我解决。

谢谢。

【问题讨论】:

  • 这个问题已经过时了,但既然我是通过谷歌来到这里的,我会分享这个参考:osstatus.com 允许您查找错误代码
  • @Daneo 它可能已经过时,但并没有过时。我在 2017 年遇到了同样的错误!

标签: iphone core-audio record


【解决方案1】:

OSStatus 错误代码很痛苦,它们通常过于笼统,无法提供帮助。你试过decode the four-char error code吗?有时这会有所帮助(其他时候你只会得到垃圾)。创建并向我们展示展示问题的最小代码示例。在这种情况下,我敢打赌四字符代码是fmt?。谷歌的数字代码,你应该更聪明。

【讨论】:

    【解决方案2】:

    1718449215 是kAudioFormatUnsupportedDataFormatError 错误的四字符代码的十进制表示。

    一般而言,您可以使用类似的方法从收到的错误中获取更多信息:

    NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain
                              code:my_error_code
                              userInfo:nil];
    NSLog(@"Error: %@", [error description]);
    

    【讨论】:

    • .m4a 是一种文件格式,而不是编解码器。您录制的编解码器由 AVFormatIDKey 确定。
    【解决方案3】:

    如果您使用 c 或 cpp 代码,则可以这样做。

    char code[4];
    *((SInt32*)&code[0]) = error;
    

    【讨论】:

      【解决方案4】:

      如果这对其他人有帮助:我刚刚遇到了同样的错误,这是由于尝试创建/使用错误格式的音频文件造成的。我已经预设了录音来创建一个 .caf 文件,但取而代之的是,文件名为 xxx.wav。

      【讨论】:

      • 当我将AVFormatIDKey 设置为kAudioFormatLinearPCMwav 格式)但忘记将目标文件的文件扩展名从.m4a 更改为.wav 时,我遇到了同样的错误.
      • 嗨,我应该为kAudioFormatAMR 设置什么扩展名?谢谢!
      【解决方案5】:

      当我将文件类型转换为 .mp3 时,我也遇到了这个问题,而之前我使用 .caf 格式通过 AVAudioRecorder 录制声音。我再次将文件类型转换为 .caf 格式并且可以正常工作。您可以使用以下格式

      AAC、PCM、IMA4、ULAW、ILBC

      【讨论】:

      • 感谢格式,iOS 允许哪些文件扩展名?例如,ULAW 格式文件的文件扩展名是什么?
      【解决方案6】:
      UInt32 code = CFSwapInt32HostToBig(error);
      NSLog(@"%4.4s"(char *)&code);
      

      【讨论】:

      • 请考虑编辑您的答案,包括对您的代码如何工作的解释。
      【解决方案7】:

      “NSDictionary”如果为空,默认为高质量,如果设置了,这个值会很低,可以尝试取消这些参数:

      setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);
      setting[AVSampleRateKey] = @(600.0);
      setting[AVNumberOfChannelsKey] = @(1);
      setting[AVLinearPCMBitDepthKey] = @(8);
      

      【讨论】:

      • 我已经从你的帖子中删除了中文的cmets。如果它们对您的回答至关重要,请将它们翻译成英文并重新添加。 StackOverflow 仅适用于英语。谢谢!
      • 哦,我明白了..感谢您的澄清。亲,请原谅我的英文不是很好,不过你可以试试这个答案,希望这个答案对你有帮助
      • 谢谢你的提醒,原谅我的粗心,我以后会注意的,我想说你是对的。谢谢!
      • 完全没有问题:)
      • 美好的一天,在中国这段时间已经深夜了,玩得开心。再见。 ?
      【解决方案8】:

      我最喜欢的破解 OSStatus 代码的工具是https://osstatus.com

      OSStatus 错误 1718449215 是kAudioConverterErr_FormatNotSupported,这可能意味着:

      • 不支持您尝试导出的格式(仔细检查输出文件 URL 的文件扩展名)。

      • recordSettings 存在问题。需要注意的一件事是 AVFormatIDKey 的值与输出文件 URL 的文件扩展名匹配。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        • 1970-01-01
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多