我正在尝试用 C++ 创建一个网络摄像头聊天程序,虽然我已经能够发送和播放要捕获的图像,但我在处理音频时遇到了问题:音频滞后且非常快与视频不同步,即使我只是自己播放。
我找到了 this答案和示例代码非常有用。
我是否可以对这段代码进行任何修改以使其几乎没有延迟,或者 OpenAL 不适合这个?我正在使用 Windows,但我计划稍后制作一个 linux 版本。
最佳答案
来自链接的代码:
ALCdevice* inputDevice = alcCaptureOpenDevice(NULL,FREQ,AL_FORMAT_MONO16,FREQ/2);
尝试使用更大的缓冲区:
ALCdevice* inputDevice = alcCaptureOpenDevice(NULL,FREQ,AL_FORMAT_MONO16,FREQ*4);
轮询是very aggressive .尝试在循环中 sleep :
while (!done) {
...
}
收件人:
int sleepSeconds = 1;
while (!done) {
...
Sleep(sleepSeconds/10) //windows, miliseconds
//sleep(sleepSeconds) //linux, seconds
}
关于c++ - 使用 OpenAL 和 C++ 同步音频和视频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050839/