我试图用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录制的一种替代方法是稍后转换文件,因此任何提示也会很受欢迎。
答案 0 :(得分:1)
您的意思是要求采样率为44100.0吗?
清除标志的方法不是设置除了那个之外的所有位(你可能在你的例子中设置了几十个非法位),但是:
mFormatFlags &= ~(bitToClear);