2

我正在尝试用 C++ 创建一个网络摄像头聊天程序,虽然我已经能够获取要发送和播放的图像,但我在对音频做同样的事情时遇到了麻烦:音频滞后并且很快就消失了与视频同步,即使我只是自己播放。

我发现这个答案和示例代码非常有用。

我可以对此代码进行任何修改以使其几乎没有延迟,还是 OpenAL 不适合这个?我正在使用 Windows,但我计划稍后制作一个 linux 版本。

4

1 回答 1

0

从链接的代码:

ALCdevice* inputDevice = alcCaptureOpenDevice(NULL,FREQ,AL_FORMAT_MONO16,FREQ/2);

尝试使用更大的缓冲区:

ALCdevice* inputDevice = alcCaptureOpenDevice(NULL,FREQ,AL_FORMAT_MONO16,FREQ*4);

投票非常激进。尝试在循环中休眠:

while (!done) {
    ...
}

至:

int sleepSeconds = 1;
while (!done) {
    ...
    Sleep(sleepSeconds/10) //windows, miliseconds
    //sleep(sleepSeconds) //linux, seconds
}
于 2014-02-19T12:54:44.233 回答