«

»

Апр 16 2015

Распечатать Запись

Медиа-сервер Nimble Streamer. Живое вещание DASH и HLS через Nimble Streamer

Nimble Streamer Сегодня в блоге я публикую гостевую статью от компании Софтвелум, в которой будет представлена информация о медиа-сервере Nimble Streamer. Данная информация была подготовлена и предоставлена компанией Софтвелум специально для публикации в блоге IT и Мультимедиа. Отмечу, что настойкой и администрирование медиа-сервера Nimble Streamer профессионально занимается копания ITM Partner.

Nimble Streamer

 Nimble Streamer — это медиа-сервер, написанный на С++ как приложение для Линукса. Его разработчики — российская команда — ставили целью создание лёгкого сервера для доставки контента по протоколам на базе HTTP.

 Сейчас Нимбл поддерживается в том числе Windows и Mac OS X и позволяет обслуживать как “живой” стриминг в реальном времени, так и раздачу видео по запросу.

 Управлять сервером можно через файлы конфигурации или через WMSPanel — облачную панель управления, с помощью которой можно не только настроить сервер, но и получить разнообразную статистику.

 Рассмотрим живое потоковое видео. Для этого режима работы Нимбл поддерживает приём данных по:

  • RTMP (publish или pull),
  • MPEG-TS (как по UDP, так и по HTTP),
  • Icecast.

 На выход может отдаваться:

  • HLS (обычный или audio-only),
  • MPEG-DASH,
  • Icecast,
  • MPEG-TS по HTTP,
  • RTMP.

 Все потоки формируются через трансмаксинг (transmuxing, transcode-multiplexing). Это означает, что медиа-данные переупаковываются из формата одного протокола доставки в другой, при этом сами аудио и видео не перекодируются, и их формат и качество остаются прежними.

 В этой статье мы разберём процесс настройки живого вещания через Нимбл. На вход ему будут подаваться RTMP-потоки (publish или pull), на выходе они будут преобразованы в DASH или HLS.

1. Установка и настройка Nimble Streamer

 Ставится Нимбл под все популярные дистрибутивы Линукса — Ubuntu, Debian, RedHat и CentOS. Используется пакетная установка, которая позволяет не только быстро поставить, но и в дальнейшем без проблем обновить софт. Для Windows и Mac OS X подготовлены отдельные инсталляторы.

 Подробнее с процессом установки Нимбла для всех поддерживаемых OS можно ознакомиться здесь. Перед установкой нужно завести аккаунт в WMSPanel, если у вас его ещё нет.

 Чтобы подать на вход RTMP-потоки для трансмаксинга, нужно указать доступные источники медиа-данных. После этого их уже подхватит Нимбл. Перейдите в окно Nimble Streamer -> Live Streams Set Up для просмотра списка доступных серверов (Рис 1).

Nimble Streamer_1

Рис. 1

 Затем выберите сервер для настройки. Большинство настроек могут быть применены к нескольким серверам сразу (Рис. 2).

Nimble Streamer_2

Рис. 2

 Теперь нажимаем на кнопку RTMP settings. Nimble поддерживает два сценария для обработки входных потоков:

  • Публикация потока по протоколу RTMP (RTMP-publish)
  • Ретрансляция готового RTMP-потока (RTMP-pull)

 Можно совмещать оба сценария, передавая Нимблу оба типа входных потоков и получая на выходе DASH и HLS. Для настройки живого вещания будем использовать первый сценарий — публикацию потока.

2. RTMP-publish: настройка параметров публикации по RTMP

Настройки приложений

 На странице RTMP settings вы увидите несколько вкладок. Первая, которая вам понадобится — это Global (Рис 3). Она содержит следующие глобальные настройки сервера:

  • длина сегмента по умолчанию для исходящих потоков;
  • количество сегментов;
  • протоколы, которые будут получаться на выходе — можно сгенерировать все поддерживаемые типы или только один, это не будет сильно влиять на производительность;
  • логин и пароль для публикации — они будут использованы по умолчанию для опубликованных потоков.

Nimble Streamer_3

Рис. 3

Добавление интерфейса

 Чтобы Нимбл мог получать опубликованные потоки, он должен быть настроен на прослушивание определённого интерфейса — адреса и порта. Перейдите на вкладку Interfaces и нажмите на кнопку Add interface (Рис. 4).

Nimble Streamer_4

Рис. 4

 Вы увидите диалог для указания адреса и порта для прослушивания. Поле IP address можно оставить пустым, в этом случае Нимбл будет прослушивать все доступные адреса (Рис.5).

Nimble Streamer_5

Рис. 5

Настройка входного потока

 На вход Нимблу нужно подать RTMP-поток. Например, если на тестовой машине есть веб-камера, можно воспользоваться видеокодером Adobe Flash Media Live Encoder (Рис.6).

Nimble Streamer_6

Рис. 6

 На вкладке Encoding Options можно задать параметры видео и аудиопотоков, либо выбрать пресет из списка. На панели Output должен быть отмечен чекбокс Stream to Flash Media server. В поле FMS URL укажите те же адрес и порт, что и во вкладке Interfaces настроек Nimble; в поле Stream — имя потока. После этого запускайте вещание нажатием на кнопку Start.

 Если веб-камеры нет, можно запустить на живое вещание уже имеющийся файл с помощью ffmpeg. Предположим, что Нимбл настроен на приём RTMP-потока по адресу 127.0.0.1:2000, и для доступа к публикации используются логин и пароль “login” и “pass” соответственно. Тогда команда для стриминга файла может выглядеть так:

./ffmpeg -re -i /home/test/content/mp4/sample.mp4 -acodec copy -vcodec copy -f flv rtmp://login:pass@127.0.0.1:2000/live/stream

 Если всё настроено правильно, вы увидите исходящий поток в WMSPanel (Рис 7).

Nimble Streamer_7

Рис. 7

3. Настройка исходящих потоков

 После того, как входящий поток определён и обработан Nimble, его можно подвергнуть трансмаксингу, передавая его уже через MPEG-DASH или любой другой протокол, который был указан в глобальных настройках, например HLS.

 Нажмите на область Outgoing stream на диаграмме потоков, либо перейдите по ссылке Outgoing в верхнем углу области настроек (Рис. 8). Вы увидите там все потоки, которые в данные момент обрабатываются и готовы к использованию. Каждый поток обладает следующим набором параметров:

  • статус,
  • имена серверов, с которых раздаётся этот поток,
  • имя потока для проигрывания,
  • параметры аудио и видео,
  • ссылка для получения URL для проигрывания потоков — это квадратик со знаком вопроса.

Nimble Streamer_8

Рис. 8

 Чтобы проиграть исходящий поток, нажмите на знак вопроса, чтобы перейти к диалогу Sample URL for player (Рис. 9).

Nimble Streamer_9

Рис. 9

 Вы получите ссылки для двух протоколов, которые вы определили в глобальных настройках сервера — MPEG-DASH и HLS. Теперь эти ссылки можно использовать в любом плеере, который вам удобен. Мы тестировали стриминг MPEG-DASH в DASH reference player и bitdash™. Можно также использовать плеер на нашем сайте (доступен только после регистрации): https://wmspanel.com/p.

Что ещё?

ABR — adaptive bitrate (адаптивное потоковое вещание)

 Получив несколько битрейтов одного и того же потока, можно сформировать HLS поток с несколькими каналами — современные плееры такие как JWPlayer умеют переключаться между каналами в зависимости от качества.

 Подробнее об этом можно почитать здесь: http://blog.wmspanel.com/2014/06/make-abr-hls-rtmp.html
Про другие сценарии живых трансляций можно прочитать в этой статье: https://wmspanel.com/nimble/live_streaming

Высокая производительность

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

 На этом мы завершаем нашу статью! Будем рады ответить на все интересующие вас вопросы.

Всего хорошего!

 Если у вас появились какие-то вопросы по медиа-серверам, пишите нам. Если вам нужно что-то настроить или получить консультацию по медиа серверам и системам, также можете обращаться ко мне и нашей команде. Разную полезную информацию на данную тему вы можете найти в нашем Справочнике по видеотрансляциям.

 Приглашаю всех подписаться на новости моей публичной страницы ВКонтакте, ее адрес http://vk.com/itmultimedia . Буду рад видеть Вас в своих подписчиках!


Комментарии:

12 pings

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>