我正在尝试使用OpenAL创建语音聊天程序.事情的网络方面似乎没问题,但我会接受建议=]
我目前遇到的问题是尝试从麦克风播放捕获的音频数据.我按照这里找到的代码获取麦克风输入并将其回显给扬声器.
这工作正常,但我似乎无法在捕获完成后播放完全捕获的音频.
当一些声音被捕获时,我将它存储在如此的列表中......
for (int i = 0; i < CAP_SIZE; i++)
{
playbackBuffer.push_back( buffer[i] );
}
Run Code Online (Sandbox Code Playgroud)
捕获完成后,我尝试(并失败)使用以下代码播放该音频
ALuint playbackSource;
alGenSources(1, &playbackSource);
errorCode = alGetError();
ALuint tempPlayback;
alBufferData(tempPlayback, AL_FORMAT_MONO16, &playbackBuffer.front(), playbackBuffer.size()*sizeof(ALuint), FREQ);
// Attach the playback buffer to the new playback source
alSourcei(playbackSource, AL_BUFFER, tempPlayback);
alSourcePlay(playbackSource);
ALint sState = 0;
do
{
alGetSourcei(playbackSource, AL_SOURCE_STATE, &sState);
}
while ((sState == AL_PLAYING));
Run Code Online (Sandbox Code Playgroud)
调试时,我可以看到playbackBuffer中有很多数据,此时播放的噪音有一瞬间,但远不及捕获的噪声.
编辑:我添加了该行
alGenBuffers(1, &tempPlayback);
Run Code Online (Sandbox Code Playgroud)
在创建tempPlayback之后和调用alBufferData(...)之前,现在播放正确的时间,但我听到的只是一个高音调的噪音.