Показаны сообщения с ярлыком ekiga. Показать все сообщения
Показаны сообщения с ярлыком ekiga. Показать все сообщения

воскресенье, 8 мая 2016 г.

Настройка видео в Asterisk и Ekiga

В прошлой заметке Краткий обзор программного телефона и клиента обмена мгновенными сообщениями Ekiga я обмолвился о том, что этот программный телефон позволяет, при наличии веб-камеры, в процессе разговора ещё и обмениваться видео. Я заинтересовался этой возможностью и решил попробовать настроить обмен видео через Asterisk.

1. Включение поддержки видео в SIP

Чтобы включить передачу видео через Asterisk, нужно в файле /etc/asterisk/sip.conf в раздел general добавить опцию:
videosupport=yes

2. Настройка кодеков в учётных записях SIP-абонентов

Далее, в том же файле в настройках учётных записей SIP, под которыми на Asterisk регистрируются программы Ekiga, нужно явным образом прописать список поддерживаемых кодеков:
disallow=all
allow=gsm
allow=alaw
allow=ulaw
allow=h264
allow=h261
allow=mpeg4
Как оказалось, по умолчанию были разрешены только аудиокодеки и один видеокодек h261. Здесь я не указал ещё два возможных видеокодека - h263 и h263p, при использовании которых видео почему-то не работало.

3. Настройка кодеков в учётных записях SIP-транков

В полученной конфигурации видео будет передаваться между абонентами, подключенными к одной и той же станции. Если же нужно, чтобы видео передавалось между абонентами разных станций, то нужно дополнительно прописать тот же список разрешённых кодеков в настройки SIP-подключений, которыми соединены станции.

Сразу замечу, что передавать видео между разными станциями по протоколу IAX2 мне не удалось.

4. Применение настроек Asterisk

Далее, чтобы новые настройки вступили в силу, нужно попросить Asterisk перечитать настройки модуля sip:
# asterisk -rx 'sip reload'
5. Настройка кодеков в Ekiga

Открываем меню "Правка", выбираем пункт "Параметры". В открывшемся окне "Настройки Ekiga" разворачиваем ветку "Звук" и выбираем пункт "Кодеки". Отмечаем только кодеки PCMU (соответствует ulaw в Asterisk), PCMA (соответствует alaw в Asterisk) и gsm:


Теперь разворачиваем в том же окне ветку "Видео" и выбираем в ней пункт "Кодеки". Отмечаем только кодеки H264 и MP4V-ES (соответствует mpeg4 в Asterisk). Можно отметить ещё кодек H261, но с помощью стрелок выставить его приоритет ниже кодека H264. По моему опыту, у него ниже качество (разрешение 176x144) и работает он менее стабильно (может рассыпаться на крупные кубики). Кодеки H263 и H263-1998 (соответствует h263p в Asterisk) у меня не заработали, поэтому их использование отключил.


6. Тестовый звонок

Когда всё заработало, выглядело это вот так:

Я сидел за компьютером с ноутбуком на коленях, поэтому в окне меня видно с двух сторон :) Гарнитура была подключена только к одному из компьютеров и лежала на столе.

Стоит приготовиться к тому, что видео не заработает сразу и придётся подбирать кодеки, с которыми оно, наконец, заработает.

В следующей заметке я рассмотрю программный телефон SFLphone. Эта программа обладает функциями, которые окажутся очень полезными для секретарей, операторов, диспетчеров. То есть - для людей, которые занимаются обработкой звонков и которым часто бывает нужно обрабатывать несколько звонков одновременно, соединять абонентов между собой и ставить звонки в очередь, пока занят абонент, на которого нужно переключить звонящего.

воскресенье, 1 мая 2016 г.

Краткий обзор программного телефона и клиента обмена мгновенными сообщениями Ekiga

Отвлечёмся ненадолго от Asterisk и обратимся к смежной теме - программным телефонам для Linux.

Ekiga - это программа, сочетающая в себе возможности программного телефона, поддерживающего протоколы SIP и H.323, и клиента обмена мгновенными сообщениями, поддерживающего протокол Jabber/XMPP. Кроме звонков и обмена текстовыми сообщениями, программа при наличии веб-камеры, позволяет также обмениваться с собеседником видео. Программа была создана в рамках одноимённого сервиса - ekiga.net. В некотором роде его можно считать аналогом Skype, но построенном полностью на открытых технологиях. Конечно, не стоит считать Ekiga полным аналогом Skype, т.к. в Skype имеется много других возможностей - создание конференций, "приземление" звонков (то есть звонки на телефонные номера телефонной сети общего пользования) и т.п.

Установить программу можно очень просто, из репозиториев:
# apt-get install ekiga
Главное окно программы выглядит следующим образом.

Здесь можно увидеть список контактов. Между протоколами не делается никаких различий, все контакты, будь то SIP или XMPP, выводятся в общий список. Поддерживается группировка контактов.

При нажатии на соответствующую кнопку можно переключиться в окно номеронабирателя:

Это окно может оказаться полезным, если нужно позвонить на некий телефонный номер однократно. Постоянных собеседников удобнее добавить в список контактов.

Следующая кнопка отображает историю звонков:


Окно переписки с абонентами Jabber/XMPP выглядит следующим образом:

Стоит отметить, что программа обладает весьма ограниченной поддержкой протокола Jabber/XMPP. Фактически можно видеть только статусы собеседников и переписываться с ними. Нельзя посмотреть профиль собеседника, нельзя отправить или принять файл.

Список учётных записей можно открыть через меню "Правка" - "Учётные записи" или нажатием Ctrl-E:


Вот так выглядят настройки учётной записи Jabber/XMPP:

Настройки очень бедные. Нельзя задать прокси или настроить шифрование.

Вот так выглядят настройки учётной записи SIP:

Тоже очень бедные настройки. Нельзя задать STUN-прокси, нельзя выбрать прослушиваемый интерфейс и порт. Программа будет использовать UDP-порт 5060 и сообщать при регистрации на SIP-прокси IP-адрес первого попавшегося интерфейса, кроме lo.

Авторы явно были под влиянием Gnome HIG и убрали все настройки, которые посчитали лишними, в аналог реестра Windows - каталог .gconf/ с XML-файлами. Чтобы получить доступ к остальным настройкам, нужно установить программу gconf-editor из одноимённого пакета. Например, при помощи такой команды:
# apt-get install gconf-editor
При запуске команды gconf-editor от имени обычного пользователя можно исправлять настройки этого пользователя. Например, прослушиваемый порт можно поменять в параметре apps - ekiga - protocols - sip - listen_port:

Мне это понадобилось сделать для того, чтобы запустить Ekiga и Asterisk на одном и том же компьютере. Поскольку порт 5060 уже используется Asterisk, Ekiga должна использовать другой порт. То же самое может потребоваться сделать, если за компьютером работают несколько пользователей одновременно (мало ли в жизни бывает?) и каждому из них нужно использовать свой SIP-телефон (обычно SIP-телефоны по умолчанию прослушивают UDP-порт 5060, так что одного порта на всех не хватает). К сожалению, это не единственный случай, когда разработчики современных программ для Linux забывают, что Linux - это многопользовательская система, в которой одновременно может работать несколько пользователей, а один и тот же пользователь может открыть одновременно несколько сеансов.

Поменять используемый STUN-прокси тоже можно через gconf-editor:

Как видно, отвечают за него параметры enable_stun и stun_server в ветке apps - ekiga - general - nat.

Ещё один полезный раздел настроек - это список используемых программой портов. В ветке apps - ekiga - protocols - ports есть параметры tcp_port_range и udp_port_range:

Если на компьютере настроен пакетный фильтр, следует по крайней мере разрешить доступ к локальным UDP-портам из этого списка снаружи. Эти порты используются для обмена мультимедийным трафиком - аудио и видео. О назначении портов TCP сказать ничего не могу.

В следующей заметке я опишу настройку Asterisk для обмена видео между программными телефонами Ekiga.