Moment Video Server
Live streaming made easy.
Разработчикам

Рекомендуется использовать готовые бинарные сборки сервера, ссылки на которые можно найти в блоке «Загрузить» справа на этой странице. Бинарные сборки:

  • Проверяются под высокой нагрузкой в реальных проектах;
  • Содержат важные исправления для ряда библиотек, которые использует 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.

Пояснения по порядку сборки сервера

  1. При обновлении сервера из git нужно обновлять (git pull) сразу все модули;
  2. При сборке сервера после обновления исходников нужно пересобирать все модули строго по порядку. Порядок сборки базовых модулей следующий:
        libmary, pargen, scruffy, mconfig, moment, moment-gst;
  3. Перед сборкой очередного модуля нужно обязательно сделать 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
Загрузить
Moment Video Server 1.4
Windows 32-bitalpha
Простые инструкции помогут
запустить видеосервер.