使用 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?