Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

VoIP система через QAudioInput/Output



  • Нужно написать программу для голосовой связи через протокол UDP.

    Принцип следующий: после получения подтверждения на звонок, программа первого клиента начинает считывать звук с микрофона (через QAudioInput), и отправлять его через QUdpSocket второму клиенту, параллельно ожидая входящих пакетов. Второй клиент при поступлении датаграммы дописывает ее содержимое в конец буфера QBuffer, который используется для воспроизведения звука (QAudioOutput).

    Собственно, не могу понять, как все это проще реализовать. Возможно ли (в т.ч. и с помощью создания доп. потоков) автоматизировать добавление в буфер воспроизведения датаграммы и удаление из начала буфера данных, которые уже были обработаны QAudioOutput? Пока единтственное, что пришло мне в голову, это таймер на 100 мс, по которому останавливается QAudioOutput, вычисляется количество байт, которые уже были воспроизведены (через QAudioOutput.processedUSecs()), они удаляются через QBuffer.buffer().remove(0,n), и снова запускается воспроизведение. Но это как-то не работает. Подскажите, пожалуйста наиболее правильное решение. Заранее спасибо.


Log in to reply