Это ни что иное как XEP-0167.
Другими словами – это расширение протокола XMPP, описывающее возможность передачи аудио- и видеопотоков между XMPP-клиентами и, в нашем случае, реализованное в Psi.
Итак, кроме XEP-0167 использовано ещё несколько технологий. Одна из них – это мультимедиа-бэкэнд GStreamer и вторая – это транспортный уровень ICE, выполненный по XEP-0176.
GStreamer считается одним из самых мощных мультимедиа-фреймворков за счёт своей простой расширяемости и простоты использования в различных сторонних библиотеках (Gnome использует его практически во всех мультимедиа-приложениях. В KDE его может использовать phonon как один из своих бэкэндов).
ICE (в нашем случае – Jingle ICE-UDP) описывает процесс установления соединения между клиентами, порядок использования портов и т.д. (подробнее - см. спецификацию).
По поводу используемых портов для передачи данных: последнее что было слышно - это то, что будет использован 8010 UDP-порт и некоторые другие, хотя ICE вообще не подразумевает жёсткую привязку к портам.
Страница проекта находится здесь. Там же можно скачать готовые сборки Psimedia для некоторых ОС.
Psimedia для кодирования/декодирования медиа-потока использует GStreamer. Другие фреймворки не поддерживаются и вряд ли будут поддерживаться.
ВНИМАНИЕ: Пакеты, выделенные жирным шрифтом, обязательно должны быть установлены вместе с заголовочными (.h) файлами. Во многих системах это называется dev-пакеты.
Если быть более точным, то glib 2.19.x (точно неизвестно начиная с какой версии psimedia будет собираться без ошибок).
Плагины: speex, v4l, v4l2, theora, ogg, alsa, jpeg.
Скрипт сборки (при условии, что перечисленные выше компоненты уже скачаны и установлены) можно найти здесь.
Перед сборкой необходимо уточнить путь установки Psi.
Если при конфигурировании Psi (configure) не был указан префикс (–prefix), то Psi будет установлена в /usr/local и, таким образом, путь установки плагина будет /usr/local/lib/psi/plugins. Довольно часто же практикуется указание префикса /usr; в этом случае путь установки плагина будет /usr/lib/psi/plugins. Учтите это ниже.
svn co https://delta.affinix.com/svn/trunk/psimedia cd psimedia qconf ./configure make mkdir -p /usr/local/lib/psi/plugins/ cp gstprovider/libgstprovider.so /usr/local/lib/psi/plugins/
Если сборка не удалась c сообщением:
cc1: warnings being treated as errors
то можно попробовать следующee:
sed 's/ -Werror//' -i gstprovider/gstelements/static/static.pro
а можно сделать это сразу
Для теста запустите demo/demo после сборки. В demo-программе для передачи картинки на нижнее окно нужно скопировать полученный кодек после старта в нижнее соответсвующее поле.
Если Вы находитесь за NAT-ом, то Вам также понадобится использовать STUN-сервер. Данная настройка находится на вкладке Misc. в настройках аккаунта. Вы можете вписать туда stun.ekiga.net (если не получится, то пропишите IP-адрес), порт 3478.
Также проверьте настройки голосовых звонков в общих настройках Psi.
UPD: на сервере jabber.ru появился собственный stun-сервер: stun.jabber.ru, порт 5249.
Psi 0.14 имеет ряд известных проблем совместимости с голосовыми вызовами. Для обеспечения стабильной работы голосовых вызовов необходимо использовать свежие версии Psi/Psi+.
Многие системы поддерживают по умолчанию только протокол IPv4, что делает невозможным установление прямого соединения. Самым простым решением этой проблемы является включение и использование протокола IPv6. Даже если поставщик услуг Интернета не предлагает подключение по протоколу IPv6, вы можете использовать туннелирование для получения поддержки IPv6. Если вы можете получить доступ к этому сайту, то это означает, что IPv6 работает правильно и вы можете перейти к следующему шагу. Посмотрите на приведённые ниже инструкции, чтобы получить подключение по протоколу IPv6.
На старых системах, таких как MS Windows XP, поддержка протокола IPv6 не включена по умолчанию. В MS Windows XP, следующая команда позволяет включить поддержку IPv6:
netsh interface ipv6 install
Если ваш провайдер предлагает встроенную поддержку IPv6, то вы можете уже иметь доступ к тестовой странице. В остальных случаях рассмотрим следующие варианты получения поддержки IPv6.
Что такое Teredo?
Если поставщик услуг не предоставляет встроенной поддержки IPv6, то вы можете настроить туннель поверх IPv4. В MS Windows XP это делается с помощью следующей команды:
netsh interface ipv6 set teredo client
В Debian и Ubuntu туннель может быть создан с помощью команды:
apt-get install miredo
or when you are not root:
sudo apt-get install miredo
Другие GNU/Linux дистрибутивы также должны иметь пакет miredo в репозитории.
Теперь попробуйте открыть тестовую странцу ещё раз.
Если Teredo не работает, то вы можете также использовать Freenet6 для создания туннеля IPv6. Скачайте один из следующих вариантов для MS Windows:
Установите и разрешите клиенту подключение. Это должно дать вам подключение по протоколу IPv6. Вы можете проверить это ещё раз, используя тестовую страницу.
Существует также gw6c, доступный в Debian и Ubuntu.
Если обе стороны могут получить доступ к тестовой странице, то это означает, что у них всегда есть возможность установить соединение для разговора друг с другом. Если это всё же не работает, то проверьте настройки брандмауэра.
Проверьте свои колонки и микрофон.
В GNU/Linux с ALSA простой тест можно сделать командой:
arecord | aplay
В MS Windows для проверки работы микрофона можно использовать инструмент Звукозапись (sound recorder).
Для проверки колонок и микрофона непосредственно из Psi/Psi+ можно использовать тестовый голосовой звонок (Collabora), подробнее – здесь.
Обратите внимание, что эти тесты не являются проверкой поддержки IPv6.
Есть ещё несколько способов использовать подключение по IPv4. Одним из вариантов является использование сервера STUN, как описано в предыдущем разделе. Однако такой подход является, как правило, менее надёжным. Авторы этой статьи настоятельно рекомендуют использовать на обеих сторонах протокол IPv6 для совершения голосовых вызовов между Psi/Psi+. Этот вариант до сих пор даёт 100%-ый результат.
На данный момент не представляется возможным успешное установление голосового соединения иежду пользователями N900. В окне обзора сервиса, Вы можете увидеть сообщение об ошибке «кодеки не совпадают». N900 в настоящее время предлагает использовать следующие аудио-кодеки:
Psi/Psi+ поддерживает только:
Поскольку они не имеют общего кодека, то прямой голосовой вызов между ними всегда обречён на провал. Однако оба телефона могут соединиться с сервисом Asterisk и участвовать в голосовой конференции, в этом случае сам сервис Asterisk будет заниматься перекодированием.
Причина, по которой Psimedia поддерживает только перечисленные кодеки, состоит в том, что в настоящее время нет поддержки в какой-либо форме codec negotiation. В дальнейшем поддержка codec negotiation будет добавлена в Psimedia с использованием библиотеки Farsight. Это принесёт поддержку многих распространённых кодеков, включая PCMA и PCMU, которая, в свою очередь, позволит совершать голосовые звонки на телефоны Nokia N900.
Существует недокументированная переменная окружения, позволяющая передавать видео. Подтверждения успешности осуществления видеозвонка не так давно были получены. Если Вы хотите протестировать данную возможность, то можете установить переменную окружения PSI_ENABLE_VIDEO=1 перед запуском Psi+.
Примечания:
Что осталось сделать: