Сергей Яремчук
Cистема видеоконференций OpenMeetings
Лучше один раз увидеть, чем сто раз услышать.
С развитием сетевой инфраструктуры в любой компании рано или поздно станет вопрос об увеличении ее возможностей за счет добавления новых сервисов. Учитывая, что некоторую часть времени сотрудники тратят на общение и обмен данными, актуальной становится применение систем конференц-связи, среди которых особую роль играют системы видеоконференций. В статье рассмотрим возможности и установку системы видеоконференций OpenMeetings
Различные совещания, планерки, пятиминутки и так далее являются неотъемлемой частью процесса управления. На них руководство доводит свои требования выбранным исполнителям, а наличие большого количества участников позволяет обмениваться мнениями и выбрать эффективное решение. Даже если подразделения компании находятся в одном здании, районе, городе, все равно некоторую часть времени участникам приходится тратить на дорогу. Не говоря уже о том, что собирать людей из разных городов – дорогое удовольствие, и не только из-за больших финансовых расходов. Время, проведенное в дороге, также имеет свою цену, ведь успех в любом деле зависит от своевременного поступления информации и быстрого принятия решений. Именно поэтому системы, позволяющие объединять в процесс разговора несколько человек, всегда привлекали внимание бизнеса и занимают свою твердую нишу. Это и IRC, форумы, телефонные (селекторные) совещания, а с появлением доступных и широких каналов в эту группу добавились и системы видеоконференций. Последние весьма востребованы и наиболее популярны у руководства. И дело здесь не в их «крутости», а в физиологии человека. Ведь визуальную информацию мы воспринимаем намного лучше. А невербальное общение (мимика, жесты) часто дает больше данных, чем сказанное слово. При этом не следует воспринимать систему видеоконференций как веб-камеру с микрофоном, подключенную к компьютеру. Хотя, вероятно, это самая простая реализация. На самом деле это комплексное решение, позволяющее не только видеть и слышать друг друга, но и обмениваться данными, обрабатывая их в интерактивном режиме. Все должно выглядеть как будто бы человек находится рядом и сидит за одним столом.
В настоящее время существует большое количество решений для организаций видеоконференций, которые различаются по многим критериям: назначению (внутреннего, внешнего использования, вещания), типу (персональные или групповые (комнатные), виду (точка-точка и многоточечные), реализации (аппаратные, программные), протоколами, лицензиями, стоимостью и так далее. Рыночная цена таких решений относительно высока, но применение свободного программного обеспечения поможет снизить затраты.
Возможности OpenMeetings
Система веб-конференций Open Meetings распространяемая по лицензии GNU GPL. С ее помощью можно организовать проведение аудио- и видеосовещаний в многоточечном режиме, когда к серверу подключено несколько десятков человек. Обеспечивается несколько вариантов конференций:
- Совещания – от 4 до 16 участников, каждый может передавать аудио- и видеоданные.
- Лекции – до 200 участников, передача аудио и видео только у модератора (лектора).
Окно видео изначально маленькое, но его можно растянуть до требуемых размеров. Предусмотрена возможность записи и последующего проигрывания совещаний. Конференции могут быть открытыми (в пределах организации) и частными.
Рисунок 1. С работой OpenMeetings можно ознакомиться на демосайте проекта
Предусмотрен импорт в конференцию документов в различных форматах (.tga, .xcf, .wpg, .txt, .ico, .ttf, .pcd, .pcds, .ps, .psd, .tiff,.bmp, .svg, .dpx, .exr, .jpg, .jpeg, .gif, .png, .ppt, .odp, .odt, .sxw, .wpd, .doc, .rtf, .txt, .ods, .sxc, .xls, .sxi, .pdf). После импорта они будут доступны другим участникам текущей конференции без ограничений. Оригинальный файл и его pdf-версия доступны для скачивания всем участникам. C целью просмотра и редактирования на доске конференции файлы конвертируются в форматы png и pdf. Участники могут редактировать загруженный документ, вводя текст поверх оригинала, рисовать, отмечать нужные места стрелками. Реализовано два типа опросов («Да/Нет» и ввод числовой оценки 1-10).
Рисунок 2. В конференции предусмотрена возможность создания опросов
Кроме видео, предусмотрен обмен текстовыми сообщениями в окне чата. Участник, организующий конференцию, сообщает о ней, отправив приглашение, включающее прямую ссылку на нужную страницу. Для рассылки задействуется внешний SMTP-сервер. У каждого пользователя имеется календарь событий с напоминанием о событиях (через электронную почту или iCal).
Реализовано три уровня доступа – пользователь, модератор и администратор. Для аутентификации пользователей (кроме администратора) возможно использование протокола LDAP, в том числе и Active Directory.
Встроенный менеджер создания резервных копий упрощает операции по резервированию и восстановлению работоспособности сервера и переносу в другую систему. При этом OpenMeetings очень прост в администрировании и после установки практически не требует к себе внимания.
Рисунок 3. Запуск с выводом отладочной информации
Следует отметить, что отдельно проект предлагает и модуль для интеграции с системой управления обучения Moodle [2], позволяющий показывать видеолекции.
Рисунок 4. Доступен модуль для системы управления обучением Moodle
В настоящее время интерфейс OpenMeetings переведен на 19 языков, среди которых есть русский и украинский. Любой другой язык добавить довольно просто. Этот процесс упрощает встроенный редактор локализованных сообщений (LanguageEditor).
Построен OpenMeetings с использованием технологий Java и XML. Для организации сервера задействуются компоненты, распространяемые под свободными лицензиями: веб-сервер Apache Tomcat, Open Source Flash/RTMP Server Red5 [3], OpenOffice.org в качестве сервера документации. В качестве базы данных могут быть использованы MySQL, PostgreSQL, Microsoft SQL Server, Oracle, DB2, Sybase, Firebird и некоторые другие. Компоненты мультиплатформенные, поэтому в качестве сервера можно использовать как один из вариантов UNIX-систем, так и Windows.
Рисунок 5. При подключении к конференции пользователь должен указать аудио- и видеоустройства
Соединение с сервером осуществляется по протоколам HTTP (порт 5080), RTMP (порт 1935), RTMPT (порт 8088) и RTMPS (порт 8443).
При этом требования к оборудованию относительно невысоки. Минимальные требования к системе, которые указанны на сайте, – компьютер с процессором 1 Ггц CPU и 1 Гб ОЗУ. Но его можно использовать при условии, что не будут задействованы возможности по конвертированию документов, загрузки файлов и записи видео. В качестве рекомендуемых указан компьютер 2x/4x 2 Ггц (32/64 бит) и 4 Гб ОЗУ. Для организации 100 соединений достаточно компьютера класса на Pentium 4 с 2 Гб ОЗУ.
Рисунок 6. Поддерживается функция импорта документов с возможностью совместной работы с ними
Требования к пропускной способности определены более четко, каждое подключение к серверу требует 256 Kбит/сек. Хотя клиент может выбрать подключение с меньшим качеством, которое потребует меньшую ширину канала – 160 Кбит/сек.
В итоге для сервера нужно обеспечить (где N – количество участников):
- входящий канал – 256*N Кбит/с;
- исходящий канал – 256*N*(N-1) Кбит/с.
Для клиентской системы:
- входящий канал – 256*(N-1) Кбит/с;
- исходящий канал – 256 Кбит/с.
И еще немаловажно, что для подключения клиентов к серверу не требуется установка дополнительного ПО, для этого используется веб-браузер с плагином для поддержки технологии Flash.
Познакомиться с работой и интерфейсом OpenMeetings можно на демосайте [4], создав для входа новую учетную запись.
Подготовительные установки
В документации, доступной на сайте проекта, установка выглядит несколько запутанной, но на самом деле все просто и логично. В статье буду описывать установку на Ubuntu Server 8.04.1, хотя все сказанное за исключением особенностей использования APT будет актуально и для других UNIX-систем. Установка в Windows имеет свои отличия, но общий принцип остается аналогичным. Здесь я рекомендую файл compilation.pdf, который можно скачать с главной страницы группы Google – OpenMeetings User [5]. Он хоть и на французском, но по картинкам общий ход процесса понять можно. Также на сайте доступны и инструкции на русском языке [6], но в них подробно раскрыт лишь процесс администрирования и работы с OpenMeetings.
Рисунок 7. Заполняем параметры на втором шаге установки
База данных должна поддерживать UTF8 и подключение через TCP/IP с локального узла. В Ubuntu 8.04 и многих других системах MySQL изначально настроен на работу только через сокет, не поддерживая TCP/IP. Для этого в /etc/mysql/my.conf следует добавить несколько строк.
[mysqld]
default-character-set=utf8
character-set-server=utf8
bind-address = 127.0.0.1
[client]
default-character-set=utf8
После чего перезапускаем MySQL.
$ sudo /etc/init.d/mysql restart
Проверяем, слушается ли порт 3306.
$ sudo /etc/init.d/mysql restart
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN |
Устанавливаем OpenOffice Converter [7]. Для установки OpenMeetings он не нужен, но понадобится при конвертировании документов во время работы сервера. В Ubuntu должны быть подключены extra-репозитории.
$ sudo apt-get update
$ sudo apt-get install openoffice.org-headless openoffice.org-base openoffice.org-writer /
openoffice.org-calc openoffice.org-impress openoffice.org-draw openoffice.org-math /
openoffice.org-filter-mobiledev openoffice.org-filter-binfilter /
msttcorefonts pstoedit libpaper-utils ttf-dejavu
Для удобства запуска создаем скрипт ooс.sh:
unset DISPLAY/usr/bin/soffice"-accept=socket,host=localhost,port=8100;urp; StarOffice.ServiceManager" -nologo -headless –nofirststartwizard
И запускаем:
$ chmod +x ./ooс.sh
$ sudo ./ooс.sh
Проверяем, слушается ли 8100 порт и выполняется ли процесс с задаными параметрами:
$ netstat -an | grep 8100
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN |
$ sudo /etc/init.d/mysql restart
root 11705 92.5 1.2 97024 25784 pts/5 Sl 15:09 0:57
/usr/lib/openoffice/program/soffice.bin -accept=socket,
host=localhost,port=8100;urp;StarOffice.ServiceManager -nologo
-headless -nofirststartwizard -splash-pipe=
|
Устанавливаем приложения, необходимые для конвертирования файлов.
$ sudo apt-get install imagemagick ghostscript swftools xfonts-base
В документации упоминается и пакет xvfb, но он необходим был только для OpenOffice.org версией выше 2.3, последние версии OpenOffice.org умеют работать с framebuffer.
И наконец устанавливаем Java. Для Red5 минимально требуется Java 5 (1.5), оптимально Java 6 (1.6).
$ sudo apt-get install sun-java6-jre sun-java6-jdk
Установка сервера Red5
Учитывая, что Red5 является основой для OpenMeetings, возможны 2 варианта установки:
- установка отдельно Red5 и OpenMeetings, при помощи архивов, взятых на сайтах проектов;
- установка Red5 и OpenMeetings, при помощи единого архива, взятого с сайта OpenMeetings.
Каждый вариант имеет свои плюсы и минусы. Так, в первом случае для установки можно выбрать любую доступную версию Red5 и OpenMeetings. На момент написания этих строк на сайте Red5 предлагались стабильные 0.6.3, 0.7.0 и тестовая 0.8.0 RC3. Для OpenMeetings последней версией является 0.8 RC2, есть еще 0.7 RC2 и стабильная 0.5.2, выпущенная в сентябре 2008 года. Для установки в Debian/Ubuntu проект Red5 предлагает deb-пакет, что упрощает обновление, и в подарок получаем набор стартовых скриптов. Кроме этого, пакет Red5 содержит ряд демонстрационных примеров. Например, зайдя после установки по ссылке http://localhost:5080/demos/port_tester.swf, можно протестировать работу портов.
В актуальной на момент написания статьи версии единого архива находится Red5 0.8.3 RC3 и 0.8 RC2 OpenMeetings. Архивы, содержащие только OpenMeetings, подписаны как Webapp Only, но для тестовой версии 0.8.0 RC2 они не представлены. Поэтому как вариант можно установить Red5 с deb-пакета, а затем скопировать OpenMeetings из единого архива.
Дальше буду рассматривать установку OpenMeetings 0.8.0 RC2 при помощи единого архива.
Создаем учетную запись, от имени которой будет работать сервер, и назначаем права на каталог.
$ sudo adduser --group red5
Adding group `red5' (GID 1002) ... |
$ sudo adduser red5 --gid 1002 --system --home /usr/lib/red5 --disabled-password
Adding system user `red5' (UID 115) ...
Adding new user `red5' (UID 115) with group `red5' ...
|
$ sudo chown -R red5:red5 /usr/lib/red5/
Скачиваем, распаковываем архив, копируем файлы на свое место:
$ wget –c http://openmeetings.googlecode.com/files/openmeetings_0_8_rc2.zip
$ unzip openmeetings_0_8_rc2.zip
Домашний каталог /usr/lib/red5 создан при выполнении adduser, копируем в него файлы.
$ sudo mv -v red5-0.8.RC3-build-hudson-red5_jdk6_stable-79_2/* /usr/lib/red5/
Теперь файлы, относящиеся к Red5, будут находиться в корне /usr/lib/red5 ($RED5-HOME), базовый каталог для OpenMeetings ($OPENMEETINGS-HOME) – webapps/openmeetings. Именно этот каталог следует использовать при раздельной установке Red5 и Openmeetings. Но копировать его в таком случае нужно в каталог webapps/root, который является корневым для встроенного Tomcat, или самостоятельно изменить эти установки.
Теперь можно проверить работу Red5. Скрипты для запуска Red5 находятся в $RED5-HOME.
$ ls /usr/lib/red5
conf lib red5.jar red5.sh webapps |
Настройки портов, используемых Red5, указаны в файле $RED5-HOME/conf/red5.properties:
$ grep -i port /usr/lib/red5/conf/red5.properties
http.port=5080
https.port=8443
rtmp.port=1935
rtmpt.port=8088
mrtmp.port=9035
proxy.source_port=1936
proxy.destination_port=1935
Если они не используются другими приложениями, нет необходимости в их изменении.
Пробуем запустить:
$ sudo /usr/lib/red5/red5.sh
Эксперименты показывают, что при попытке первого запуска происходит ошибка. Причина оказалась банальной, это первая строка в скрипте red5.sh:
if [ -z "$RED5_HOME" ]; then
export RED5_HOME=`pwd`;
fi
Так как переменную RED5_HOME никто не устанавливал, то запуск с другого каталога приводит к тому, что сервер не может найти своих файлов. Поэтому правильно сделать так:
$ cd /usr/lib/red5
$ sudo ./red5.sh
Starting Red5
Red5 root: /usr/lib/red5
Configuation root: /usr/lib/red5/conf
Root: /usr/lib/red5
Deploy type: bootstrap
Logback selector: org.red5.logging.LoggingContextSelector
Setting default logging context: default
Red5 Server 0.8.0-RC3 $Revision: 3568 $ (http://www.osflash.org/red5)
|
Последующие запуски с любого каталога происходят уже без проблем. Проверяем, слушаются ли порты:
$ netstat -an | grep 1935
tcp6 0 0 :::1935 :::* LISTEN |
$ netstat -an | grep 5080
tcp6 0 0 :::5080 :::* LISTEN |
Также работу Red5 можно проверить, зайдя при помощи веб-браузера на страницу http://localhost:5080.
Запуск во время отладки сервера лучше производить без перевода процесса в фон (&). В этом случае в консоли будут выводиться сообщения сервера, и мы получаем возможность сразу увидеть ошибку. В дальнейшем для запуска можно создать init-скрипт, скрипт, идущий в deb-пакете Red5 с некоторыми изменениями, можно скачать с сайта журнала www.samag.ru в разделе «Исходный код».
Еще одной возможной причиной неудачи при запуске может быть неустановленная переменная JAVA_HOME. Обычно скрипт самостоятельно находит каталог с jvm, но если этого не происходит, то ее следует установить:
$ export JAVA_HOME=/usr/lib/jvm/java-1.6.0-sun/
Не забыв внести эту строку в /etc/profile.
Настройка OpenMeetings
Теперь необходимо создать базу данных, учетную запись для управления, настроить подключение к базе сервера OpenMeetings.
$ mysql -uroot -p
mysql> create database openmeetings;
mysql> grant all on openmeetings.* to openmeetings@localhost identified by "om_user_pass";
База создана. Информация для подключения к базе данных находится в файле openmeetings/conf/hibernate.cfg.xml. В указанном каталоге имеется несколько шаблонов:
$ cd /usr/lib/red5/webapps/openmeetings/conf
$ ls
any_hibernate.cfg.xml mysql_hibernate.cfg.xml
postgres_hibernate.cfg.xml hibernate.cfg.xml om_ldap.cfg
|
Так как мы используем MySQL, берем шаблон mysql_hibernate.cfg.xml и переименовываем в hibernate.cfg.xml:
$ cp mysql_hibernate.cfg.xml hibernate.cfg.xml
Соответственно для PostgreSQL выбираем postgres_hibernate.cfg.xml, для всех остальных – any_hibernate.cfg.xml (внутри есть шаблоны для нескольких баз данных).
Теперь следует отредактировать в hibernate.cfg.xml параметры доступа к базе данных.
<property name="connection.username">openmeetings</property>
<property name="connection.password">om_user_pass</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLMyISAMDialect</property>
Строка connection.url по умолчанию выглядит так:
<property name="connection.url">jdbc:mysql://localhost/openmeetingsautoReconnect=true& /
useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
Я ее привел к виду:
<property name="connection.url">jdbc:mysql://localhost/openmeetings</property>
Именно так рекомендует документация. После изменений в hibernate.cfg.xml следует перезапустить Red5.
Для дальнейшей работы потребуется установить на клиентских системах последнюю версию Flash Player 10 [8]. Несмотря на то что в репозитории Ubuntu имеется нужный пакет (с таким же номером версии), лучше взять Flash Player именно с сайта Adobe. Почему-то с убунтовским пакетом OpenMeetings не дружит.
Скачиваем его с сайта и ставим.
$ sudo dpkg -i install_flash_player_10_linux.deb
Теперь можно переходить к установке OpenMeetings, для этого переходим по адресу http://localhost:5080/openmeetings/install. Мастер установки состоит из двух шагов. На первом выводится краткая информация по компонентам и настройкам, необходимым для работы Open Meetings. На втором следует ввести учетные данные для входа в систему, вписать название организации. Затем заполнить данные в нескольких полях.
Поле Configuration:
- Allow self-registering (allow_frontend_register) – разрешить самостоятельную регистрацию пользователей (по умолчанию – Yes);
- Send Email to new registered Users (sendEmailAt Register) – отсылать почтовое сообщение новым пользователям (по умолчанию – Yes);
- New Users need to verify their EMail (sendEmailWith VerficationCode) – пользователи должны подтвердить указанный почтовый адрес (по умолчанию – No);
- Mail-Referer (system_email_addr) – системный почтовый адрес, который будет использоваться в сообщениях.
Указываем в полях SMTP-Server, SMTP-Server Port, SMTP-Username и SMTP-Userpass соответственно имя SMTP-сервера, порт и учетные данные, необходимые для отправки сообщения. Выбираем в Default Font for Export шрифт для экспорта (по умолчанию TimeNewRoman) и в раскрывающемся списке Default Language язык по умолчанию.
Теперь в поле Converters указываем путь к каталогу SWFTools (определяем whereis pdf2swf) и ImageMagick (определяем whereis convert).
Поле Crypt Type определяет стиль шифрования, возможны два варианта:
- org.xmlcrm.utils.crypt.MD5Implementation – MD5 как в PHP (по умолчанию);
- org.xmlcrm.utils.crypt.MD5CryptImplementation – BSD-стиль.
Если планируется использование для аутентификации LDAP-сервера, то в строке LDAP Config следует указать путь к файлу, в котором прописаны параметры подключения. В поставке имеется готовый шаблон такого файла – openmeetings/conf/om_ldap.cfg:
- ldap_conn_url – сервер:порт LDAP (ldap://localhost:389);
- ldap_admin_dn – DN (distinguished name) пользователя для обращения к серверу LDAP (cn:ommanager, dc=localhost);
- ldap_passwd – пароль пользователя;
- ldap_login_base – ветвь для поиска пользователя ldap_admin_dn (OU:…,OU:…,DC:…);
- ldap_search_base – ветвь для поиска данных (может совпадать с предыдущим);
- field_user_principal – поле сервера, с которым сравнивают введенные данные (uid).
Поле Screen Viewer позволяет выбрать вариант клиентского подключения. Под Standard Screenviewer, предлагаемым по умолчанию, понимается веб-браузер. Этот вариант оптимизирован для низкоскоростных каналов. В локальной сети можно использовать jrDesktop.
Многие установки затем можно будет изменить в окне администрирования OpenMeetings. Когда установки закончены, нажимаем INSTALL. На этом этапе может показаться, что приложение зависло. Чтобы убедиться, что что-то все-таки происходит, достаточно перейти в консоль, в которой запущен Red5. Сам процесс установки занимает некоторое время, и, пока не получим сообщение в окне браузера Installation Complete, нажимать, что-либо в окне браузера не следует. Иначе придется весь процесс повторить сначала. По окончании вызываем http://localhost:5080/openmeetings/ и регистрируемся с учетными данными, указанными на втором шаге. Если Red5 использует отличные от установок по умолчанию порты, их следует изменить в файле openmeetings/config.xml.
При возникновении проблем можно подключиться к серверу с выводом отладочной информации. Для этого необходимо использовать следующий адрес – http://localhost:5080/openmeetings/maindebug.lzx.lzr=swf8.swf.
Чтобы проверить работу конвертора документов, следует ввести такую команду:
$ java -jar /usr/lib/red5/webapps/openmeetings/jod/jodconverter-cli-2.2.0.jar -p 8100 -f pdf test.ppt
где:
- -f (--output-format) – выходной формат файла;
- -p (--port) – порт, на котором принимает подключения OpenOffice.org Converter.
Инструкции для пользователя и администратора Open Meetings на русском языке можно найти в документации [6].
Если все сделано правильно и без ошибок, мы получим полностью готовую к работе и локализованную систему видеоконференций. Возможно, что после установки вместо надписей на русском будет выводиться Error и в чате нечитаемый текст. Это значит, что во время установки были допущены ошибки, следует удалить базы и повторить установку OpenMeetings сначала. Хотя, учитывая, что проект пока находится в состоянии активной разработки, никто не застрахован от вероятных ошибок. Единственная не решенная на данный момент проблема – вывод читаемого текста в чате при работе на клиентской Linux-машине. Вероятно, это связано с особенностями реализации Flash для этой системы.
- Сайт проекта OpenMeetings – http://code.google.com/p/openmeetings.
- Сайт системы дистанционного обучения Moodle – http://www.moodle.org.
- Сайт проекта Red5 – http://osflash.org/red5.
- Демосайт – http://www.openmeetings.de.
- Группа Google OpenMeetings User – http://groups.google.com/group/openmeetings-user.
- Русские инструкции – http://code.google.com/p/openmeetings/wiki/RussianTranslatedInstructions.
- Страница OpenOfficeConverter – http://code.google.com/p/openmeetings/wiki/OpenOfficeConverter.
- Страница Flash Player 10 – http://labs.adobe.com/technologies/flashplayer10.