使用OpenAL& amp;同步音频和视频播放C ++

时间:2013-04-17 03:16:48

标签: c++ openal

我正在尝试用C ++创建一个网络摄像头聊天程序,虽然我已经能够将所捕获的图像发送和播放,但我对音频执行相同操作时遇到了麻烦:音频滞后且非常快与视频不同步,即使我只是自己播放。

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

我是否可以对此代码进行任何修改以使其几乎无滞后,或者OpenAL是否适合这种情况?我正在使用Windows,但我打算稍后制作一个Linux版本。

1 个答案:

答案 0 :(得分:0)

来自链接的代码:

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

尝试使用更大的缓冲区:

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

民意调查是very aggressive。试着在循环中睡觉:

while (!done) {
    ...
}

要:

int sleepSeconds = 1;
while (!done) {
    ...
    Sleep(sleepSeconds/10) //windows, miliseconds
    //sleep(sleepSeconds) //linux, seconds
}