Поддержи Openmeetings

суббота, 26 декабря 2009 г.

Зачем платить $350 000, если есть OpenMCU?

Чтобы соединить несколько участников в видеоконференцию, можно купить небольшой MCU (Multipoint Control Unit) от Тандберга за $349 990. А можно научиться использовать и сочетать решения с открытым исходным кодом.

В качестве инструментов для сеанса конференц-связи мной были использованы следующие свободные продукты:

  • GNU Gatekeeper версии 2.2.7, далее gnugk;
  • GUI для гейткипера от Jan Willamowius, далее gkgui;
  • виртуальная машина Sun xVM Virtualbox для Linux и Windows, далее vbox;
  • дистрибутив Debian Linux;
  • Ekiga версии 3.0.2 для Windows и версии 3.0.1 для Linux;
  • OpenMCU 2.2.3.
Также для тестирования использовался наш продукт Pulse, чтобы проверить его в работе с другим ПО.

В конференц-связи участвовало 4 компьютера в следующей конфигурации:

  • простой клиент — OS Windows (Pulse*);
  • сервер — Debian Lenny (Ekiga + gnugk) + vbox Debian Etch (OpenMCU);
  • cложный клиент — OS Windows (Ekiga*) + vbox Debian Lenny (Ekiga);
  • простой клиент 2 — OS Windows (Ekiga);
  • простой клиент 3 — OS Windows (Ekiga*);
  • простой клиент 4 — OS Windows (Pulse*).

Звёздочкой помечены клиенты с включёнными видеокамерами, на остальных был включён режим с плавающей заставкой.

Тестирование прошло успешно, был установлен сеанс связи (H.261) между 7 участниками, с одновременной трансляцией видео и звука, с обходом NAT и без оного. Теперь подробнее о трудностях организации. Вначале, безусловно, необходимо установить настроить все инструменты. Большие трудности вызывает установка OpenMCU, так как он использует постоянно меняющиеся и не совместимые от версии к версии бибиотеки переносимости PWLib (PTLib) и свободную реализацию H.323 OpenH323 (H323Plus). В моём случае нормально построить и установить получилось OpenMCU версии 2.2.3, использующую PTlib 1.12.0 и H323Plus 1.20.2, библиотеки были найдены методом научного тыка и попыток компиляции в различных конфигурациях.

Далее, как оказалось, при перегрузке процессора возможны race conditions в сеансах связи, приводящие к плотному подвисанию, и именно поэтому я вынужден был задействовать большее число простых клиентов и меньшее число виртуальных машин. Также было много проблем с тем, что в Debian в стандартной установке поставляется глючная Ekiga 2.0.3, при том, что текущая версия — 3.0.2, и тут пришлось подключать экспериментальный репозиторий, указанный у них на сайте и устанавливать более позднюю версию оттуда (получилось сделать только с дистрибутивом Lenny). OpenMCU был настроен на использование гейткипера через веб-интерфейс, в качестве имени был выбран MCU. Все Ekiga были настроены на использование гейткипера, так как каждый клиент на виртуальной машине выходил в интернет через NAT, и, соответственно, с OpenMCU они соединялись через него звонком на h323:MCU@, отдельные клиенты, в частности те, что работали с Pulse, были вызваны приглашениями через веб-интерфейс OpenMCU вызовом в комнату MCU.

Что необходимо сделать в дальнейшем. Первое и самое главное — H.264. На данный момент OpenMCU обнаруживает и подключает только H.261 видеокодек — при том что в кодеках могут лежать и H.263 из H323Plus, и H.264 из Opal. Совместимость с Opal присутствует, так как кодек H.261 из Opal, положенный вместо H323Plus-овского, обнаруживается и работает нормально. В коде H.264 кодека уже было обнаружено, что часть, касающаяся H.323 протокола, откомментирована, но убрать комментарии недостаточно. Пока в планах — разобраться с H.263 кодеком, представленным в обоих библиотеках — Opal и H323Plus, а потом взяться и за 264.

Второе — механизм микширования видеопотоков в OpenMCU оставляет желать лучшего. При сеансе связи в 1-2 человека это полноэкранный режим, при связи до 4 экран разделяется на 4 части, потом на 9, (16?, 25?) Я бы сделал некоторые настройки микширования а-ля ведущий + слушатели, 2 ведущих + слушатели, и другие популярные композиции.

Третье — в некоторых случаях звонки на MCU из Ekiga (Windows) не проходили по неизвестным причинам, и установить связь можно было только вызовом из самого MCU. Сразу после вызова звонки на MCU магически начинали работать. Причину установить пока не могу, но в дальнейшем планирую разобраться.

3 комментария :

Отправить комментарий