我在编码多通道 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 通道编码?