【发布时间】:2011-11-24 08:53:06
【问题描述】:
我正在尝试使用 AudioQueue 录制一个小端序的 PCM 文件。根据文档,我应该清除 AudioStreamBasicDescripton.mFormatFlags 中的 kAudioFormatFlagIsBigEndian 位。
文档说:
kAudioFormatFlagIsBigEndian。设置大端,清除小端 字节序。
我的设置看起来像
- (void)setupAudioFormat:(AudioStreamBasicDescription*)format
{
//format->mSampleRate = 8000.0;
format->mSampleRate = 44000.0;
format->mFormatID = kAudioFormatLinearPCM;
format->mFramesPerPacket = 1;
format->mChannelsPerFrame = 2;
format->mBytesPerFrame = format->mBytesPerPacket = format->mChannelsPerFrame * sizeof(SInt16);
format->mBitsPerChannel = 16;
format->mReserved = 0;
format->mFormatFlags = ~kAudioFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked | kAudioFormatFlagIsAlignedHigh;
}
我得到的错误是
kAudioFileUnsupportedDataFormatError
谁能帮我找出问题所在?甚至可以在 iOS 设备上录制小端序吗?使用 little endian 录制的一种替代方法是稍后转换文件,因此任何关于此的提示也将非常有用。
【问题讨论】:
标签: ios core-audio pcm endianness