


Рекомендуется использовать готовые бинарные сборки сервера, ссылки на которые можно найти в блоке «Загрузить» справа на этой странице. Бинарные сборки:
- Проверяются под высокой нагрузкой в реальных проектах;
- Содержат важные исправления для ряда библиотек, которые использует moment (в частности, для захвата MJPEG). Части этих исправлений нет в системных версиях библиотек;
- Просты в установке и при обновлении — экономят ваше время;
Исходный код видеосервера «Момент» размещён на GitHub. Сервер написан на C++.
Краткое описание git-модулей, из которых состоит сервер в базовой конфигурации, в порядке сборки:
- libmary — базовая библиотека. Цикл обработки событий, файлы, таймеры, работа с сетевыми соединениями, поддержка многопоточности, кроссплатформенность;
- pargen — генератор парсеров;
- scruffy — препроцессор для конфигурационных файлов;
- mconfig — парсер конфигурационных файлов;
- moment — собственно видеосервер и его базовая библиотека. Поддержка протоколов RTMP и RTMPT, модули mod_rtmp и mod_file;
- moment-gst — интеграция с gstreamer (модуль mod_gst);
- mychat — приложение «Видеозвонки».
Код приложения «MyPlayer» находится в модуле moment, в поддиректориях flash/mysubscriber и web/myplayer.
Код приложения «Видеозвонки» находится в модуле mychat.
Пояснения по порядку сборки сервера
- При обновлении сервера из git нужно обновлять (git pull) сразу все модули;
-
При сборке сервера после обновления исходников
нужно пересобирать все модули строго по порядку.
Порядок сборки базовых модулей следующий:
libmary, pargen, scruffy, mconfig, moment, moment-gst; - Перед сборкой очередного модуля нужно обязательно сделать make install для предыдущего модуля.
Отход от этих правил может привести к получению сборки с ошибками, т.к. межмодульные интерфейсы часто меняются.
Для правильной работы модуля mod_gst убедитесь, что в системе не установлен элемент gstreamer bcmdec (плагин crystalhd). Соответствующий пакет в Ubuntu называется gstreamer0.10-crystalhd. Если этот пакет установлен, то его следует удалить.
Пример последовательности команд для сборки из git.
Зависимости
Для сборки сервера нужны следующие основные библиотеки:
-
Glib последних версий (протестировано с glib 2.30 и выше).
-
Шаблонизатор ctemplate версии >= 2.2. Используется в mod_file для раздачи .tpl-файлов. Использование ctemplate можно отключить параметром --disable-ctemplate при конфигурировании (./configure) модуля moment. Встроенные приложения moment (видеоплеер, видеозвонки) без ctemplate работать не будут.
-
gstreamer 0.10 Если использование gstreamer не требуется, то можно не собирать модуль mod_gst, а moment сконфигурировать с параметром --disable-gstreamer.
Чтобы полностью задействовать возможности по захвату и перекодированию видео, нужно установить все основные плагины gstreamer вместе с их зависимостями. Это модули gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-ffmpeg.
Moment можно собрать в однопоточном варианте, что позволяет повысить производительность сервера на один поток за счёт исключения примитивов синхронизации потоков. Для этого libmary нужно конфигурировать с параметром --disable-mt-safe, а moment — с параметром --disable-gstreamer. Модуль mod_gst в однопоточном варианте работать не может.
Сборка под FreeBSD
Moment нужно собирать компилятором gcc версии не ниже 4.4. Для этого можно установить свежую версию gcc/g++ из портов и использовать её, задав переменные среды CC и CXX.
При сборке модуля libmary под FreeBSD нужно задать следующие флаги ./configure:
./configure --with-poll --disable-epoll
запустить видеосервер.