0
我試圖用AudioQueue錄製一個小端的PCM文件。根據文檔,我應該清除AudioStreamBasicDescripton.mFormatFlags中的kAudioFormatFlagIsBigEndian位。在iOS上錄製使用AudioQueue的little endian PCM
的文檔說:
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設備上記錄小尾數?一個替代小端的錄製方法是晚些時候轉換文件,這樣任何提示都會很有幫助。
的方式,我終於解決了它在我的情況是清除整個格式結構。你猜我應該總是這樣做嗎? :) memset(format,0,sizeof(format)); –
相當memset(格式,0,sizeof(*格式)) – 2012-04-15 15:25:50