2013-10-22

Nimble Streamer - сервер для медиа-стриминга

И снова здравствуйте.

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

Итак, в начале 2013 года мы представили медиа-сервер Nimble Streamer. Это лёгковесный сервер, заточенный под потоковую передачу данных (стриминга). Что он умеет?


В этой презентации можно посмотреть обзор основных фич, а ниже - чуть подробностей.

MP4 to HLS VOD transmuxing и MP4 to MPEG-DASH transmuxing. Можно класть на сервер файлы MP4, заэнкоденные в H.264/AAC, и по мере обращения, на лету, делать re-packaging в HLS и MPEG-DASH. Это и называется транзмаксинг, т.е. перепаковка формата передачи данных при передаче их клиенту для воспроизведения. На формат энкодинга это влияет, поэтому при должной оптимизации (а она у нас присутствует в полной мере) операция это достаточно быстрая и не ресурсоёмкая. Что важно - передача в ведётся в режиме VOD.

Потоковую передачу в "живом режиме" - live streaming. Можно брать данные по RTMP и транзмаксить в HLS, DASH, Icecast. Можно также раздавать по RTMP - как на проигрывание, так и на пере-публикацию. Также в качестве источников может быть взяты MPEG-TS и Icecast.

Кроме этого есть функционал для ре-стриминга медиа-данных по HTTP-based протоколам. Нимбл умеет делать ре-стриминг для HLS, Smooth Streaming, HDS, MPEG-DASH и pseudo-streaming. Ставится несколько edge-серверов Нимбла поближе к клиентам-потребителям трафика и эти сервера настраиваются на origin - на всё тот же Nimble или на любой другой медиа-сервер.

Нимбл умеет эффективно кешировать данные как в памяти, так и на диске, поэтому ориджин будет работать с уменьшенной нагрузкой - её возьмут на себя эджи в исполнении Нимбла.

Кроме указанных протоколов Nimble умеет раздавать контент по протоколу progressive download (он же псевдо-стриминг) в качестве как origin, так и edge. Многие сайты в Рунете предпочитают раздавать именно через этот протокол.

В дополнение имеется возможность делать балансировку нагрузки между медиа-серверами. Это важно в нашем случае, т.к. расчёт делается на то, что медиа-стример будет ставить несколько небольших серверов поближе к потребителям контента. Отсюда необходимость балансировать нагрузку по местоположению или IP-адресам. Кроме гео, есть возможность разбрасывать соединения и по round robin.

Был реализован механизм защиты от ре-стриминга - hotlinking protection - он позволяет предотвращать кражу прямых ссылок. Также можно ограничивать работу потоков через гео-локацию или диапазоны IP.

Сервер в данный момент ставится на Ubuntu, Debian, CentOS и RedHat через обычную пакетную установку, а также на Windows и MacOS через нативные установщики.

Сервер - бесплатный. Деньги мы берём за удобное управление через веб-интерфейс и возможность создания статистических отчетов через уже упоминавшуюся панель управления WMSPanel. Чтобы гарантировать возможность бесплатного использования, мы открыли формат конфигурационных файлов, чтоб можно было работать с сервером автономно, без привязки к нашей панели управления.

Кстати, сервер, как и сервис, разрабатывается российской командой, с нами можно встретиться и пообщаться на родном языке. Впереди большие планы, так что если есть пожелания или вопросы - обязательно обращайтесь.

Уверен, кому-то из моих читателей наша разработка пригодится.

P.S. Да, это снова разнузданный самопиар :)

6 комментариев:

  1. А где внятная документация по конфигам?
    Ставлю я nginx-rtmp и настраиваю рестриминг rtmp источников за пару минут.
    У вас в документации на сайте веб-панелькой всё.

    ОтветитьУдалить
    Ответы
    1. Совершенно верно, WMSPanel - это основной способ настройки. Конфиг с правилами стриминга - это сохраненные в файле настройки из панели. Формат постоянно дополняется новыми элементами, поэтому сопровождать описание этого конфига в нашем случае не совсем рационально. Самый простой способ понять его структуру - посмотреть сохранённые настройки.

      Это что касается rules.conf. А про nimble.conf, т.е. общие настройки поведения сервера, подробно расписано здесь:
      http://blog.wmspanel.com/p/nimble-streamer-configuration.html
      туда добавляются все новые параметры по мере появления. Там собраны се параметры, не управляемые со стороны панели.

      Ну а насчёт пары минут - в веб-интерфейсе всё делается примерно также, если не быстрее. Например, для настроенного входящего потока сделать перепубликацию - дело пары щелчков мыши: http://blog.wmspanel.com/2014/10/rtmp-republishing-nimble-streamer.html Ну а вывод через RTMP или HLS длля такого потока будет просто работать сразу, без приседаний.

      Удалить
  2. Здравствуйте, меня заинтересовал ваш сервер стриминга, но хотел поинтересоваться, реализована ли у вас возможность записи архива допустим как в WOWZA LiveStreamRecord? Сколько не ищу информации как таковой нет. И если нет то планируете данное дополнение в будующем?

    ОтветитьУдалить
    Ответы
    1. Добрый день,

      Как раз в данный момент мы делаем функциональность DVR, которая как раз будет реализовать то, о чем вы говорите. До конца года будут реализованы и выпущены основные сценарии, далее будем дорабатывать остальное. Полагаю к концу октября будет первая версия. Следите за http://blog.wmspanel.ru - там будут все значимые обновления. Плюс социалки - Твитер, ФБ.

      Удалить
  3. Добрый день!
    Подскажите, пожалуйста, может ли один Nimble Server раздавать MPEG-DASH из файлов, хранящихся на локальном диске, и при этом кэшировать отдаваемые данные на локальных SSD и в оперативной памяти?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте,

      Именно так сейчас Нимбл и работает - поток при транзмаксинге сохраняется на в память и на диск. Вот в этой статье: http://itmultimedia.ru/postroenie-seti-dostavki-video-po-zaprosu-s-pomoshhyu-nimble-streamer/
      в разделе "Тонкая настройка вещания" подробно описан механизм кеширования.

      Удалить