Пользователь
0,0
рейтинг
18 января 2011 в 14:09

Разработка → BigBlueButton: открытое решение организации конференций


Почти уверен что перед каждым ИТ отделом ставилась задача организовать видеоконференцию, или просто конференцию, например с филиалом. Решений задачи много — от дорогих аппаратных до бесплатных софтовых. Хочу обратить внимание хабрсообщества на одно из бесплатных решений этой задачи — BigBlueButton. На хабре уже была небольшая заметка о нем, я попытаюсь рассказать немного подробнее об этом решении, а так же о опыте его внедрения у нас в компании.


Сами разработчики позиционируют его как решение для обучения и проведения презентаций, заявленный функционал ничуть не мешает нам использовать его для наших бизнес-целей. На главной странице проекта есть ссылка на демонстрацию решения. В первый раз наткнувшись на BigBlueButton в поисках решения организации конференции я пошел именно по этой ссылке, то что я там увидел впечатлило и казалось, полностью подойдет под наши нужды (впрочем, так и оказалось).

Приятным сюрпризом, также, оказалось что полностью функционирующая система доступна в виде образа VMWARE прямо на сайте разработчиков, там же находится и подробная инструкция по установке. Здесь стоит отметить, что указанный образ без проблем конвертировался и запустился под hyper-v.

Скачав и запустив образ мы практически сразу получаем решение «из коробки» (ip машина получает по dhcp). Уже в таком виде вполне можно пользоваться bbb, для этого нам понадобиться видеокамера и гарнитура. Демо конференции доступны если зайти браузером на адрес развернутого сервера.

После входа в конференцию открывается основное окно:


В верхней левой части окна отображаются участники конференции. Тут стоит отметить что участники могут быть двух типов — обычный участник и модератор. Обычный участник может слушать и смотреть конференцию. Модератор может управлять микрофонами участников, а так же давать участникам право демонстрации. Участник обладающий правом демонстрации может размещать на панели демонстрации (панель по середине) различные материалы (например документ word или powerpoint) которые будут доступны для просмотра всем участникам конференции. Также участник конференции может смотреть изображение с камеры других участников, если другой участник ее включил.

В нижней левой части располагается окно так называемых «слушателей» — это участники конференции, попавшие в нее дозвонившись на телефонный номер конференции. Этот функционал весьма интересен и полезен (нам по крайней мере) и о на его настройке я остановлюсь немного подробнее позже.

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

Более подробно работа с интерфейсом bbb описана в документе, ссылку на который я приложил в конце заметки, это реальная инструкция участника используемая нами.

Теперь я хочу рассказать о том, что собственно мы изменили «под себя»


В первую очередь мы поменяли часть создания\входа в конференции.

Образ распространяется как демонстрационный и изначально имеется несколько шаблонов-примеров, для того чтобы понять каким образом создаются конференции. Шаблоны находятся здесь:

/var/lib/tomcat6/webapps/bigbluebutton/demo

Изучив их мы просто создали свой, теперь у нас при входе на сервер конференций примерно следующее:



Второе, что хотелось реализовать — дозвон в конференцию с телефонов.


В BigBlueButton телефония (да и вообще весь голос) поддерживается встроенным Asterisk, соответственно нам придется как-то связать существующую сеть телефонии с bbb Asterisk. Все необходимые конфигурационные файлы Asterisk лежат в

/etc/asterisk/

Собственно, нам понадобится только два файла:

bbb_sip.conf
bbb_extensions.conf


Телефония у нас в компании организована посредством Cisco CallManager, связать его с Asterisk мы можем, например, SIP-транком. Для этого на стороне Asterisk мы меняем bbb_sip.conf таким образом:

[bbbuser]
type=friend
username=bbbuser
insecure=very
qualify=no
nat=yes
host=dynamic
canreinvite=no
context=bbb-voip
disallow=all
allow=ulaw

[TO_CCM]
disallow=all
type=friend
context=bigbluebutton
host=172.31.0.2
port=5062
allow=ulaw
allow=alaw
nat=no
canreinvite=no
qualify=no
dtmfmode=rfc2833

где 172.31.0.2 — адрес нашего CCM, 5062 — транковый порт.

На стороне CCM также создается SIP-транк в сторону Asterisk, создается роут-паттерн с какого-нибудь внутреннего номера в этот транк, таким образом звонок на внутренний номер будет заворачиваться на Asterisk и в конференции.

На стороне Asterisk также был немного изменен файл bbb_extensions.conf

В разделе

[prompt]
exten => s,1,Read(CONF_NUM,conf-getconfno,5,,3,10)
exten => s,n,Goto(bbb-conference,${CONF_NUM},1)

Необходимо прописать число символов в номере конференции, у нас 5.

Также мы поменяли раздел

[bbb-conference]
include => echo-test

exten => _XXXX.,1,Agi(agi://localhost/findConference?conference=${EXTEN})
exten => _XXXX.,n,GotoIf($[${EXTEN} = ${CONFERENCE_FOUND}]?valid:invalid)
exten => _XXXX.,n(valid),Playback(conf-placeintoconf)
; exten => _XXXX.,n,MeetMe(${CONFERENCE_FOUND},cdMsT)
exten => _XXXX.,n,Set(CALLERID(name)= ${IF($["${CALLERID(name)}" = ""]?${CALLERID(num)}:${CALLERID(name)})})
exten => _XXXX.,n,Konference(${CONFERENCE_FOUND},H)
exten => _XXXX.,n(invalid),Goto(handle-invalid-conference,s,1)


Суть изменений такова: когда внешний абонент дозванивается и попадает в конференцию его CALLERNAME показывается в окне слушателей, но т.к. имя звонящего далеко не всегда передается конечной АТС в конечном итоге почти всегда в окне слушателей появляется «unknown caller», что само по себе логично, но мешает понять кто есть кто в слушающих, приведенное изменение служит для того, чтобы в случае отсутствия имени у звонящего выводился его определившийся номер телефона.

Что еще?
Платформа оказалась на удивление гибкой и дружественной к изменениям, в случае такой необходимости весь предоставляемый ею функционал можно встроить в корпоративный портал, можно автоматизировать заказ конференций, можно прикрутить еще что-нибудь к телефонии, да вообще много чего можно :)

Полезные ссылки:
Сайт разработчиков
Группа BBB в google
Рабочая инструкция участника видеоконференции: Скачать Инструкция_участника_видеоконференции_хабр.docx с WebFile.RU
@mad_c
карма
22,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (22)

  • +2
    Отличный материал. Webinar.tw порядком поднадоел!
  • 0
    Как у них с нагрузкой. Тестировали?
    • 0
      Смотря какой нагрузкой, если говорить о ресурсах самой машины, на которой все это крутится (виртуалка под hyper-v, памяти 1Gb, отдано 4 логических процессора AMD Opteron 8354 2,2G) могу сказать, что при 10-15 участниках нагрузки по процессору практически нет. Что касается полосы пропускания сети, подробно описано тут, из чего можно сделать вывод, что сервер с bbb должен иметь неплохой внешний канал (если планируются внешние пользователи сервиса). Специально ничего не замеряли, но и проблем пока небыло.
  • +1
    Единственной вещью, оттягивающей BBB назад, есть использование Red5 в качестве медиа сервера (он отстает технологически от других, хоть это и не играет значимой роли при наиболее общих шаблонах использования). Интересна была бы попытка переделать BBB на Erlyvideo сервер, от чего можно выиграть в скорости\масштабируемости
    • –1
      Ценность erlyvideo из-за erlang вообще равна нулю. Red5 активно используется и кастомизируется под себя любым, кто знает Java и умеет набрать ant build. Если нужен именно Flash server, тогда смотреть на на haxe.
      А если реконвертер из/в флеш — то xuggler/ffmpeg/librtmp в сочетании с red5 или Wowza. Но уж точно не erlyvideo.
      • +2
        Я думаю у тебя сильно предвзятое отношение к языку Erlang (при том, что сам я тоже Java Developer). Erlang изначально асинхронно-параллельный, что означает совершенно иной уровень масштабируемости, нежели у Java. Также, на сколько я знаю, Erlyvideo активно развивается, а Red5 «замерз» в разработке (при всех его иных достоинствах).
    • 0
      Update (by openkazan). Оказывается портирование на Erlyvideo уже в процессе:

      groups.google.com/group/bigbluebutton-setup/browse_thread/thread/ace5dfdde20bea14/52192d0bfd2d05f0?#52192d0bfd2d05f0
    • +1
      Как я уже писал в рассылке, мы начали процесс портирования BBB на erlyvideo, однако сейчас этот процесс приостановлен, потому что именно портировать особого смысла нет — слишком кошмарна серверная часть.

      То, что за флешкой представляет из себя адскую смесь из джавы, скалы и всяких других серверов, понакачанных из интернета. Куда уж в конференциях без очереди сообщений =) «Активная кастомизация» этого продукта всё таки очень осложнена и невообразимо громоздким кодом Red5, и общей ненужной сложностью структуры.

      В итоге мы сейчас делаем своё решение, какие-то вещи позаимствуем из BBB (сохраняя GPL, конечно).

      А вообще — это хороший проект и хорош он прежде всего тем, что сделан, упакован и работает.
  • 0
    А запись добавили? Именно это останавливало.
    • 0
      Записи, по дефолту, кажется нет. Но ведь там есть Asterisk, к которому при желании можно прикрутить и запись.
      • 0
        боюсь, что всё не так просто с записью.
        Помимо аудио есть ещё видео, чат, рисунки и т.п. Это всё тоже хотелось бы рисовать.
  • 0
    А чем вы конвертировали в hyper-v?
    • 0
      Vmdk2Vhd — бесплатная утилита, можно также MSCVMM конвертировать, думаю.
  • 0
    Видел это решение больше года назад. Тогда оно было ооооочень тяжелым — по крайней мере грузилось на заявленных 2-х мегабитах несколько минут. Сейчас все шустро :) Радует.
    Автор, спасибо за повторную наводку — пригодится!
  • 0
    сам уже год присматриваюсь. буквально на днях развернул сабж на хостовой ubuntu 10.4.1 в hyper-v. по сравнению с версией 0.64 работать стало стабильнее и без особых глюков. как раз собирался начинать тестировать и думать как страничку входа изменить под себя. автору спасибо за наводку.
    отсутствие записи конечно минус, надеюсь реализуют со времнем.
  • 0
    bbb — классная штука, недавно делал модуль интеграции bbb с ActiveCollab
  • 0
    Особенно радует, что это OpenSource, и развивается очень динамично.
    • 0
      вгв… бфл когда-то открытый epresence.tv/ но его к сожалению свернули и он стух.
  • 0
    Сами разработчики позиционируют его как решение для обучения и проведения презентаций, заявленный функционал ничуть не мешает нам использовать его для наших бизнес-целей.

    При данном сценарии использования, каждый при входе в BBB должен вручную расшарить камеру и вступить в аудио-конференцию. Мне это показалось неудобным; оно вам не мешает в проведении конференций?
    • 0
      Честно говоря, даже не задумывался об этом, жалоб никаких, предварительно участникам рассылается инструкция, если в конференции участвует руководящий состав, обычно есть специально обученные люди на местах, которые и исполняют эту инструкцию, а также следят за ходом конференции. :)
      • 0
        Понятно, спасибо за файл с инструкцией. А в каких масштабах она у вас используется? Разные ли города, какое максимальное количество человек участвовало?
        • 0
          9 филиалов в городах по России, до 15 участников — полет нормальный, больше не пробовали пока. Обычно как происходит: в ЦО в переговорной ставится ноутбук с камерой и конференц-станция от cisco (можно в принципе использовать что-то другое, главное тут не «поймать» эхо в конференцию, т.е. нужна какая-то железка с эхоподавлением нормальным). В переговорную приглашаются участники, которые слышат конференцию через станцию, а так же через нее слышно их всех, напротив ноутбука садиться ведущий конференции, можно вывести видео с ноутбука на проектор, можно использовать отдельную видеокамеру. В удаленных филиалах примерно также, иногда включается кто-то со своих рабочих мест, поэтому в итоге получается участников не так много.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.