Russian Qt Forum

Qt => Работа с сетью => Тема начата: IronRider от Июнь 13, 2015, 21:54



Название: QXMPP проблемы с передачей звука и соединением между сетями
Отправлено: IronRider от Июнь 13, 2015, 21:54
Доброго времени суток.
Скачал тестовую программу VoIPTest https://github.com/hipersayanX/VoipTest (https://github.com/hipersayanX/VoipTest). Данная программа использует библиотеку QXMPP https://github.com/qxmpp-project/qxmpp (https://github.com/qxmpp-project/qxmpp), которая в свою очередь использует OPUS и VPX. Все это дело собрал на Win7 x64 с помощью Qt5.
Вроде бы все работает, за исключением двух моментов:
1. Звук приходит с жуткой задержкой и воспроизводится немного дергано (видео передается нормально).
Сначала грешил на кодек. Попробовал пересобирать с кодеком SPEEX и без кодека вообще - безрезультатно. Пробовал сделать свою программу для передачи звука. Использовал один QIODevice для передачи звука в канал и один QIODevice для приема звука из канала. Тут же нам предлагают использовать QXmppRtpAudioChannel и для приема и для передачи. Это немного смущает.

2. Если оба компьютера находятся в одной локальной сети, то вызов можно совершить. Если компьютеры находятся в разных сетях, вызов совершить нельзя.
Для соединения между сетями используется STUN. С помощью Wireshark смотрел пакеты. Если оба компьютера находятся в одной ЛВС, в Wireshark появляются исходящие пакеты STUN на локальный адрес абонента(например 192.168.1.2 - 192.168.1.3), после чего от абонента приходит STUN пакет с ответом в котором содержится ip и порт. Если же компьютеры находятся в разных сетях, STUN пакеты все равно уходят на локальный адрес абонента(например 192.168.1.2 - 192.168.3.15), но ответа, разумеется не приходит, так как абонент находится в другой сети.
Если я не ошибаюсь, STUN пакеты должны уходить на STUN сервер, а не на локальный адрес абонентов.

На гитхабе вопрос задал, но ответа не дождался.

Подскажите, пожалуйста, как эти проблемы можно решить.