【问题标题】:Error setting ClientDataFormat设置 ClientDataFormat 时出错
【发布时间】:2013-10-01 21:06:13
【问题描述】:

我在对多通道 Apple 无损文件的某些配置进行编码时遇到了一些问题。我对 2、4 和 6 通道配置没有任何问题,但是在生成 12 通道文件时遇到了问题。

使用 ExtAudioFile API,我能够创建具有 12 通道 AudioStreamBasicDescription 和 12 通道 FileChannelLayout 的音频文件。在设置 12 通道 ClientDataFormat 时(在设置客户端布局之前完成,显然也失败了),我得到“fmt?”错误代码。

我的 ClientDataFormat 的 AudioStreamBasicDescription 生成如下:

AudioStreamBasicDescription asbd;

asbd.mSampleRate = m_sampleRate;
asbd.mFormatID = kAudioFormatLinearPCM;
asbd.mFormatFlags = kAudioFormatFlagIsFloat;
asbd.mBytesPerPacket = m_channels * 64 / 8;
asbd.mBytesPerFrame = asbd.mBytesPerPacket;
asbd.mFramesPerPacket = 1;
asbd.mBitsPerChannel = 64;
asbd.mChannelsPerFrame = m_channels;
asbd.mReserved = 0;

采样率为 176.4 kHz,m_channels 设置正确。这适用于 2、4 和 6 通道设置,所以我不认为它有问题。我也尝试过使用 32 位有符号整数而不是 64 位浮点数,但结果是一样的。

我不确定我错过了什么。 Apple Lossless 编解码器是否可能不支持 12 通道编码?

【问题讨论】:

    标签: macos core-audio extaudiofile


    【解决方案1】:

    我不确定 MacOSForge 的规范是否确定,但根据 http://alac.macosforge.org/trac/browser/trunk/ReadMe.txt

    3. From one to eight channels are supported. Channel orders for the supported formats are described as:
                Num Chan        Order
                1               mono
                2               stereo (Left, Right)
                3               MPEG 3.0 B (Center, Left, Right)
                4               MPEG 4.0 B (Center, Left, Right, Center Surround)
                5               MPEG 5.0 D (Center, Left, Right, Left Surround, Right Surround)
                6               MPEG 5.1 D (Center, Left, Right, Left Surround, Right Surround, Low Frequency Effects)
                7               Apple AAC 6.1 (Center, Left, Right, Left Surround, Right Surround, Center Surround, Low Frequency Effects)
                8               MPEG 7.1 B (Center, Left Center, Right Center, Left, Right, Left Surround, Right Surround,  Low Frequency Effects)
    

    【讨论】:

    • 这是一个有趣的可能性,但我原以为当我传入 12 通道 ASBD 或将 kExtAudioFileProperty_FileChannelLayout 属性设置为 12 通道布局时,ExtAudioFileCreateWithURL 会发生错误。
    • 看起来编码函数检查 kALACMaxChannels 确实是 8。
    • ExtAudioFileCreateWithURL 验证其参数是有意义的。我会提交一个错误。
    猜你喜欢
    • 2016-03-26
    • 2017-12-19
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多