使用 OpenAL(C++) 录制声音。缓冲区大小

Posted

技术标签:

【中文标题】使用 OpenAL(C++) 录制声音。缓冲区大小【英文标题】:Recording sound with OpenAL(C++). Buffer size 【发布时间】:2012-12-23 15:07:14 【问题描述】:

我在使用 OpenAL 库录制声音时遇到了一个问题。我读了这个问题的第二个答案:Recording Audio with OpenAL。但我不明白,如何更改缓冲区大小。例如,如果我将 SSIZE 和缓冲区大小更改为 441,程序就会崩溃。如果你知道这个问题的答案,请解释一下,我怎样才能获得采样率为 96000Hz 的 1 ms 缓冲区。 (数组中的 96 个元素,1 个通道,8 位)。请帮帮我。

添加: 我改变了这个:

const int SRATE = 96000;
const int SSIZE = 96;

ALbyte buffer[SSIZE];
ALint sample;

AL_FORMAT_STEREO16

AL_FORMAT_MONO8

这给了我这个错误:

【问题讨论】:

显示您编写的代码...还请记住,由于开销,不太可能实现 1ms 缓冲区 【参考方案1】:

我猜 alcGetIntegerv 返回的样本数大于 SSIZE ...

【讨论】:

在 alcGetIntegerv 样本值始终为 0 之后。如何发现缓冲区的禁用长度的准确值?

以上是关于使用 OpenAL(C++) 录制声音。缓冲区大小的主要内容,如果未能解决你的问题,请参考以下文章

C++ / W32 - 录制声音、Direct Show 或 WaveInOpen?

如何使用openAL将实时音频输入从麦克风录制到文件中? (里面有C++代码)

在 C++ 中捕获音频

录制的声音比原始声音慢

通过 openAL 将录制的音频保存为 .wav

C++ 中的录音