我正在尝试用C ++创建一个网络摄像头聊天程序,虽然我已经能够将所捕获的图像发送和播放,但我对音频执行相同操作时遇到了麻烦:音频滞后且非常快与视频不同步,即使我只是自己播放。
我发现this答案和示例代码非常有用。
我是否可以对此代码进行任何修改以使其几乎无滞后,或者OpenAL是否适合这种情况?我正在使用Windows,但我打算稍后制作一个Linux版本。
答案 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
}