如何以16bits格式正确录制音频LittleEndian带有核心音频

时间:2018-04-06 17:12:50

标签: c audio core-audio pcm 16-bit

我知道有很多可能类似的问题,但我的问题非常特别。 我使用CoreAudio相对较新。我在Linux / C中使用功能齐全的应用程序并使用Alsa库。我正在调整它到MacOS / C但我有一个问题,以获得必要的音频格式。 我按如下方式配置AudioQueue:

AudioStreamBasicDescription recordFormat;
memset(&recordFormat, 0, sizeof(recordFormat));
recordFormat.mFormatID |= kAudioFormatLinearPCM;

recordFormat.mFormatFlags &= ~kLinearPCMFormatFlagsAreAllClear;
recordFormat.mFormatFlags &= ~kLinearPCMFormatFlagIsFloat;
recordFormat.mFormatFlags |= kLinearPCMFormatFlagIsSignedInteger;
recordFormat.mFormatFlags &= ~kLinearPCMFormatFlagIsBigEndian;
recordFormat.mFormatFlags &= ~kLinearPCMFormatFlagIsNonInterleaved;
recordFormat.mFormatFlags |= kLinearPCMFormatFlagIsNonMixable;
recordFormat.mFormatFlags &= ~kLinearPCMFormatFlagIsPacked;

recordFormat.mChannelsPerFrame = 1;
recordFormat.mBitsPerChannel = 16;

recordFormat.mSampleRate = 44100;

但是我录制的音频存在问题:

  • 当我打开时,频率看起来不太正确 带有大胆的.pcm文件,声音加速。

阅读"适用于Mac和iOS的音频编程动手指南"并且我搜索了网络和所有推荐的读数,但我没有找到任何理由说明提供的代码不好。

这是我的第一篇文章,所以如果我没有遵守所有规则,我会道歉。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果声音编辑器以两倍的音高播放原始音频两倍,那么它可能会尝试播放单声道文件,就好像它是立体声一样。