【问题标题】:CoreAudio - kAudioFileUnsupportedDataFormatErrorCoreAudio - kAudioFileUnsupportedDataFormatError
【发布时间】:2011-12-22 00:01:12
【问题描述】:

我刚刚开始使用 CoreAudio。只是试图创建一个音频文件,但得到一个 kAudioFileUnsupportedDataFormatError 与以下。

谁能告诉我为什么?在我看来一切正常,但我一定做错了什么。

// Prepare the format
AudioStreamBasicDescription asbd;
memset(&asbd, 0, sizeof(asbd));

asbd.mSampleRate = SAMPLE_RATE;        // 44100

asbd.mFormatID = kAudioFormatLinearPCM;
asbd.mFormatFlags = kAudioFormatFlagIsBigEndian;
asbd.mBitsPerChannel = 16;
asbd.mChannelsPerFrame = 1;
asbd.mFramesPerPacket = 1;
asbd.mBytesPerFrame = 2;
asbd.mBytesPerPacket = 2;

// Set up the file
AudioFileID audioFile;
OSStatus audioErr = noErr;
audioErr = AudioFileCreateWithURL((CFURLRef)fileURL,
                                 kAudioFileAIFFType,
                                 &asbd,
                                 kAudioFileFlags_EraseFile,
                                 &audioFile);

【问题讨论】:

  • 好吧,我通过将 mFormatFlags 更改为 asbd.mFormatFlags = kLinearPCMFormatFlagIsBigEndian | 让它工作了。 kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;

标签: macos core-audio


【解决方案1】:

好吧,我通过将 mFormatFlags 更改为:

asbd.mFormatFlags = kLinearPCMFormatFlagIsBigEndian | 
                    kLinearPCMFormatFlagIsSignedInteger | 
                    kLinearPCMFormatFlagIsPacked;

我现在正在寻找一份 Apple 文档或其他资源,以告诉您哪种格式需要哪些标志以及原因。

【讨论】:

    【解决方案2】:

    mFormatFlags 是位字段标志,因此它们可以使用按位逻辑运算符组合,因此密度和可能的理解难度。在“争取旗帜”之前要查看的另一个有用的文件可能是这个:

    https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/CoreAudioOverview/SupportedAudioFormatsMacOSX/SupportedAudioFormatsMacOSX.html

    另外,这个用于获取人类可读形式的标志的 Objective-C 实用程序也已发布:

    https://gist.github.com/eppz/11272305

    问候!

    【讨论】:

      【解决方案3】:

      “核心音频数据类型参考”包含 AudioStreamBasicDescription 的参考资料。但它非常密集且难以理解。

      “iOS 音频单元托管指南”有一个名为“使用 AudioStreamBasicDescription 结构”的部分,它更有帮助。

      d.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-02
        相关资源
        最近更新 更多