Я пытаюсь создать программу чата для веб-камеры на C ++, и, несмотря на то, что мне удалось получить отправляемые и воспроизводимые изображения, у меня возникают проблемы с тем же звуком: звук отстает и очень быстро выходит из строя. синхронизировать с видео, даже когда я просто воспроизводил его для себя.
я нашел этот ответ и пример кода, чтобы быть действительно полезным.
Могу ли я внести какие-либо изменения в этот код, чтобы он был практически без задержек, или OpenAL не подходит для этого? Я использую Windows, но я планирую сделать версию для Linux позже.
Из связанного кода:
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
}
Других решений пока нет …