我知道有很多可能类似的问题,但我的问题非常特殊。 我对 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 音频编程实践指南》并搜索了网络和所有我能找到的推荐读物之后,我没有找到任何原因说明所提供的代码不好。
这是我的第一篇文章,如果我没有遵守所有规则,我深表歉意。提前致谢。
最佳答案
如果声音编辑器以两倍的音高两倍的速度播放原始音频,那么它可能会尝试像立体声一样播放单声道文件。
关于c - 如何使用核心音频正确录制 16 位 LittleEndian 签名整数 PCM 格式的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697922/