c++ - 使用 OpenAL 和 C++ 同步音频和视频播放

标签 c++ openal

我正在尝试用 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/

相关文章:

c++ - 将 16 位立体声转换为 16 位单声道

c++ - 为什么 std::mutex 在 OSX 上这么慢?

C++ CURL post 文件然后得到响应错误

c++ - 如何在 C++ 中获取文件的大小?

c++ - 从函数 C++ 设置指针变量

c++ - 如何正确处理音频中断?

Go,OpenAL,DirectSound和Heisenbug

ios - 在 iOS 中使用 OpenAL 进行混响

c++ - 输出不正确