вторник, 25 августа 2015 г.

Построение сети живого вещания по RTMP с помощью Nimble Streamer

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


Для преодоления таких ограничений можно создать сеть вещания, состоящую из origin-сервера и edge-серверов. Разместив origin-сервер в крупном дата-центре, а edge-сервера ближе к зрителям, можно создать отказоустойчивую сеть вещания, которая позволит балансировать нагрузку между origin и edge серверами, а также уменьшить нагрузку на каналы связи с помощью настройки кэширования. По-сути мы создадим свой Content Delivery Network (CDN). Далее мы рассмотрим как это сделать с помощью Nimble Streamer и ретрансляции потоков по протоколу RTMP.

Для примера будем использовать Adobe FMLE в качестве источника, генерирующего видео-поток. Можно использовать любой энкодер, который поддерживает RTMP вещание, например FFMPEG.

Для создания описанной сети нужно выполнить следующие действия:
1. Настроить трансляцию с энкодера на origin;
2. Настроить origin на ретрансляцию потока на edge сервер;
3. Настроить edge сервер на прием входящего RTMP потока и вещание HLS для зрителей.

Установка Nimble Streamer


По умолчанию предполагается, что уже есть установленные origin и edge серверы Nimble Streamer. С процессом установки Nimble Streamer для всех поддерживаемых операционных систем можно ознакомиться здесь.

Настройка трансляции с энкодера


Запустите приложение Adobe FMLE. Настройте параметры "Device", "Format", "Frame Rate",  "Input Size", "Output Size". Для нашего примера будут использованы следующие параметры:
Devece: Встроенная веб-камера;
Format: H.264;
Frame Rate: 30.00;
Input Size: 320:240;
Output Size: 320:240.

Укажите параметры FMS URL и Stream для вещания RTMP потока на медиа-сервер. Например, rtmp://192.168.5.5:2935/origin и livestream. Названия origin и livestream будут использованы в дальнейшем при настройке ретрансляции.


Нажмите кнопку Connect и затем кнопку Start. Энкодер должен запуститься в работу.

Перейдем к настройкам Nimble Streamer.

Настройка origin сервера Nimble Streamer


Зайдите на сайт wmspanel.com под своей учетной записью. Перейдите "Nimble Streamer" -> "Настройки живых потоков" / "Nimble Streamer" -> "Live streams settings" (здесь и далее через косую черту будет приводится название в английском варианте интерфейса). Во вкладке "Глобальные" / "Global" поставьте галочку для RTMP и нажмите кнопку "Сохранить" / "Save".



Перейдите во вкладку "Интерфейсы" / "Interfaces" и нажмите кнопку "Добавить интерфейс RTMP" / "Add RTMP interface". В появившемся диалоге укажите номер порта для входящих RTMP потоков (в нашем примере 2935) и нажмите кнопку сохранить.


Перейдите на вкладку "Повторное публикование RTMP" / "RTMP republish" и нажмите кнопку "Добавить" / "Add". В диалоговом окне введите значения "Приложение-источник" / "Source application" и "Поток-источник" / "Source stream", соответствующие входящему потоку с вашего энкодера (см. раздел Настройка трансляции с энкодера). Укажите IP адрес edge-сервера в поле "Адрес получателя", куда будет ретранслировать поток, и номер его порта RTMP. Введите значения "Приложение-получатель" / "Destination application" и "Поток-получатель" / "Destination stream" для edge-сервера. Нажмите кнопку "Ok", чтобы сохранить изменения.


Далее необходимо выполнить настройку edge-сервера для осуществления приема RTMP потока с origin-сервера и перепаковки RTMP потока в HLS для осуществления вещания на устройства конечных пользователей.

Настройка edge сервера


На странице "Nimble Streamer" -> "Настройки живых потоков" / "Nimble Streamer" -> "Live streams settings" выберите ваш edge-сервер в выпадающем списке слева от названия "НАСТРОЙКИ ЖИВЫХ ПОТОКОВ" / "LIVE STREAMS SETTINGS". На вкладке "Глобальные" / "Global" поставьте галочки для протоколов HLS и RTMP. Нажмите кнопку "Сохранить" / "Save".


Перейдите на вкладку "Интерфейсы" / "Interfaces" и нажмите кнопку "Добавить интерфейс RTMP" / "Add RTMP interface". В появившемся диалоговом окне укажите номер порта (1935) и проверьте, что выбран ваш edge-сервер. Нажмите кнопку "Сохранить" / "Save".



Через несколько секунд ваш edge-сервер будет вещать входящий в него поток по протоколам HLS и RTMP.  Чтобы в этом убедиться, перейдите "Nimble Streamer" -> "Живые потоки" / "Nimble Streamer" -> "Live streams" и нажмите на цифру в колонке "Outgoing streams" в строке, соответствующей вашему edge-серверу.


Появится исходящий поток c зеленой надписью "Online". Чтобы убедиться, что ваше edge-сервер выдает поток нажмите на знак вопроса.


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



Если вам нужно добавить больше edge-серверов, то повторите вышеописанную процедуру, указав во вкладке "Повторное публикование RTMP" / "RTMP republish" вашего origin-сервера "Адрес получателя" / "Destination address", "Приложение-получатель" / "Destination application" и "Поток-получатель" / "Destination stream" нового edge-сервера.

Можно произвести дополнительную настройку edge-серверов для повышения их производительности. Подробности чайте в статье "Nimble Streamer performance tuning".

В статье был описан только RTMP publish, однако Nimble Streamer поддерживает еще и pull RTMP.
Кроме RTMP Nimble Streamer поддерживает и другие протоколы. Вы можете использовать RTSP протокол в режиме pull и/или publish (в зависимости от того, какой из ваших серверов имеет внешний открытый IP адрес). Можно использовать протокол MPEG-TS HTTP/UDP.
Также можно комбинировать эти протоколы, например с камеры (энкодера мобильного устройства) передавать поток на origin по протоколу RTSP, с origin-сервера повторно публиковать поток на некоторые edge-серверы по протоколу RTMP, а с некоторых - тянуть MPEG-TS по HTTP. С edge-серверов можно раздавать конечным пользователям про протоколам HLS, MPEG-DASH и RTMP.


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



С помощью Nimble Streamer можно создать большую и надежную сеть доставки живого видео.

Для преобразования контента в потоки ABR на edge-серверах можно использовать Транскодер для Nimble Streamer, который поможет сэкономить трафик для подоюных сценариев.

Сопутствующая документация


Возможности живого вещания Nimble StreamerТранскодер для Nimble StreamerRTMP playback support in Nimble StreamerRTMP republishing via Nimble StreamerStreaming RTMP to HLSPull RTMP for ABR HLS transmuxing by Nimble Streamer

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

Отправить комментарий