«

»

Авг 26 2015

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

Построение сети доставки видео-по-запросу с помощью Nimble Streamer

nimble_vod_edge_origin Сегодня в блоге я публикую гостевую статью от компании Софтвелум, в которой будет рассказываться об организации распределенной системы или сети видео-по-запросу (VoD) с использованием медиа-сервера Nimble Streamer. Отмечу, что развертыванием и поддержкой таких систем профессионально занимается копания ITM Partner, к которой вы можете обратиться за помощью.

Origin-сервера и edge-сервера

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

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

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

Nimble_Streamer_Edge_Origin_servers

Рис. 1

 Возможно, вам будет интересно познакомиться с картой подводных кабелей с подсчетом общей пропускной способности и задержки, которая представлена на (Рис. 2), более подробно смотрите по этой ссылке.

Submarine Cable Map 2015 and media streaming

Рис. 2

 Подобная сеть вещания может быть создана при использовании медиа-сервера Nimble Streamer, который можно установить как на origin, так и на edge. Он не требует больших системных ресурсов, поэтому требования к “железу” могут быть минимальны, а значит, стоимость владения сетью доставки будет низкой.

Установка и настройка origin-сервера

 Для создания сети вещания нам потребуется создать origin-сервер — то есть установить Nimble Streamer на какой-нибудь сервер и прописать в нем маршруты вещания с указанием места хранения видео-контента. Nimble Streamer не требователен к ресурсам, поэтому его можно установить на любую виртуальную машину (см. эту статью в блоге команды Nimble в качестве примера установки Nimble Streamer на виртуальную машину с Ubuntu).

 Вы также можете указать в качестве источника медиа-файлов удаленное HTTP хранилище Data Center with Media Storage (Рис. 3). Подробнее про настройку маршрутов для удаленного HTTP хранилища смотрите в статье “Стриминг VOD с удалённого HTTP хранилища с помощью Nimble Streamer”.

Data Center With Media Storage plus Nimble Streamer

Рис. 3

 После установки Nimble Streamer, настройки маршрутов вещания и указанием места хранения медиа-файлов у вас должна появится ссылка для просмотра видео (например, http://104.131.143.22/local/raw/BigBuckBunny_320x180.mp4/manifest.mpd для MPEG-DASH или http://104.131.143.22/local/raw/BigBuckBunny_320x180.mp4/playlist.m3u8 для HLS).

 После того, как вы настроили origin-сервер необходимо создать один или несколько edge-серверов и настроить ретрансляцию.

Установка и настройка edge-сервера

 Процесс установки edge-сервера Nimble Streamer такой же как и у origin, разница заключается  в настройках маршрутов вещания. Кроме того, в качестве edge-сервера может выступать очень легкая виртуальная машина. После того, как вы установили и перезагрузили edge-сервер он появится в списке серверов в WMSPanel. Для настройки ретрансляции перейдите “Nimble Streamer” -> “Edit Nimble Routes” (Рис. 4).

Re-streaming setup wizard_Nimble_Streamer

Рис. 4

 Нажмите на кнопку “Re-streaming setup wizard” и в появившемся диалоговом окне введите медиа URL потока с origin-сервера (Рис 5).

Re-streaming setup wizard_Nimble_streamer_server

Рис. 5

 Как видите, URL медиа-данных edge получился похож на исходный URL для origin-сервера, с той лишь разницей, что для edge будет свой IP адрес (в данном случае edge-сервер установлен на локальной машине, поэтому WMSPanel выдает локальный IP-адрес). Если вы хотите, чтобы для edge-сервера часть пути, стоящая после IP адреса и номера порта отличалась от такой же части для origin-сервера, то можно нажать на ссылку “Edit” (Рис.6).

Nimble_Streamer_server_routes

Рис. 6

и отредактировать поле “Path” в появившемся диалоговом окне (Рис. 7).

Nimbe_streamer_routes

Рис. 7

 В результате для ретрансляции должна получиться ссылка, похожая на такую:

http://192.168.5.5:8081/vladivostok/hls/BigBuckBunny_320x180.mp4/playlist.m3u8

Для создания распределенной сети вещания может потребоваться создать еще несколько edge-серверов. Выполните аналогичные действия по установке и настройке для каждого edge-сервера Nimble Streamer.

Тестирование полученных медиа-URL

Запустите VLC плеер и нажмите на ссылку “Open media” (Рис. 8).

vlc_open media_nimble_streamer

Рис. 8.

 Укажите URL медиа данных и нажмите на кнопку Open (Рис. 9).

VLC Open source

Рис. 9

 Можно протестировать ретрансляцию VOD на компьютере или на мобильном устройстве, используя такие плееры как bitdash или JWPlayer. Можно вставить представленный ниже фрагмент на вашу веб-страницу для тестирования полученного URL (пример для JWPlayer):

<!DOCTYPE html>

<html>

<head>

<script type=»text/javascript» src=»http://codeorigin.jquery.com/jquery-1.10.2.min.js»></script>

<script type=»text/javascript» src=»http://player.longtailvideo.com/jwplayer.js»></script>

</head>

<body>

<script src=’_YOUR_JWPLAYER_SOURCE_PATH_’ type=’text/javascript’></script>
<div id=’jw_player_wrapper’></div>
<script>
 $( function() {
   jwplayer(‘jw_player_wrapper’).setup({
     file: «http://192.168.5.5:8081/vladivostok/hls/BigBuckBynny_320x180.mp4/playlist.m3u8»,
     height: 180,
     width: 320
   });
   jwplayer(‘jw_player_wrapper’).play();
 } );
</script>

</body>

</html>

Тонкая настройка вещания

 Nimble Streamer создавался для обеспечения высокой производительности. Являясь нативным приложением для Linux, Nimble работает очень быстро и имеет низкое потребление ресурсов. Он также портирован под Windows и MacOS без использования сторонних библиотек или платформ, что делает его таким же производительным под указанные платформы.

Общий сценарий видео-по-запросу выглядит следующим образом:

  1. Edge-сервер получает запрос на файл от медиа-плеера.
  2. Этот запрос передается на origin-сервер и файл загружается.
  3. Как только часть файла становится доступной, он начинает показываться зрителю.
  4. Загруженный файл полностью помещается в файловый кэш на жёстком диске;
  5. Если файловый кэш заполнен, то файл помещается в кэш оперативной памяти.
  6. Если от другого зрителя поступит запрос на этот файл, то этот файл будет взят из кэша edge-сервера, вместо того, чтобы быть заново запрошенным у origin-сервера.
  7. Если к моменту обращения файл загружен не полностью, будет отдана уже скачанная часть, таким образом даже несколько тысяч одновременных обращений не будут ждать появления полного файла, а получат уже доступные данные.

 Такой сценарий загрузки (сначала в файловый кэш на жестком диске, потом в кэш в оперативной памяти) связан с обеспечением отказоустойчивости. Если edge-сервер по каким-либо причинам перезагрузится (например, в процессе обновления), то данные в кеше останутся. При этом если зритель был подключен к медиа-серверу, то после возобновления работы медиа-сервер продолжит выдавать фрагменты видео с любого места, которое запросит медиа-плеер.

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

 Файловый кэш на edge-сервере хранится в директории, которая указана в переменной  «cache_path« в конфигурационном файле Nimble Streamer.

 Для предотвращения переполнения диска, нужно ограничить объем, доступный для кэширования. Настройки производятся через web UI в парметре “Max file cache size (MB)”: необходимо перейти в меню “Servers” и напротив названия вашего медиа-сервера в таблице нажать на колесико и затем нажать “Edit” (Рис. 10).

Nimble_Streamer_edit_server

Рис. 10

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

 В конфигурационном файле необходимо указать параметр «vod_cache_timeout», который содержит количество часов, в течение которых в кэше будут хранится файлы (и фрагменты). По умолчанию этот параметр имеет значение 24, а значит файлы будут храниться сутки и потом удаляться. Для того, чтобы файлы могли храниться дольше нужно увеличить этот параметр (скажем 360 часов, что соответствует 15 дням хранения).

 Для управления кэшем Nimble Streamer использует механизм LRU (Least Recently Used). Nimble Streamer удаляет из кэша файлы и фрагменты, которые дольше всего не использовались, основываясь на времени из конфигурационного файла. Можно установить это время с помощью параметра “vod_cache_min_storage_time”. Если edge-серверу Nimble необходимо сохранить новый файл или фрагмент в кэш, но кэш уже полон, тогда файлы или фрагменты с самым ранним временем использования (к которым давно не обращались) будут удалены.

Подведем итог

 С помощью Nimble Streamer можно создать надежную сеть доставки видео-по-запросу, которая будет распределять нагрузку между origin и edge серверами, а с помощью WMSPanel можно гибко управлять этой сетью.

Что еще?

 Помимо механизма удаленного управления серверами, Nimble Streamer и WMSPanel позволяют защитить ваш контент от копирования с помощью техник привязки к домену. Подробнее об этом можно прочитать в статье Привязка к домену. С помощью Nimble Streamer и WMSPanel можно также создать систему платного доступа к вашему контенту.

 Но это еще не все. С помощью веб-консоли WMSPanel можно собирать статистику вещания и генерировать отчеты. Статистику можно просматривать как в режиме реального времени, так и ретроспективно. Более подробно про статистику и отчетность читайте в соответствующем разделе на сайте WMSPanel.com. На основе ежедневной статистики есть возможность настроить базовую биллинговую функциональность.

 Отчетность можно строить по общему количеству подключений, пропускной способности, используемым устройствам для воспроизведения. А можно создать срезы данных и смотреть статистику в разрезе приложения, потока или отдельного сервера. Кроме того, есть возможность “закамуфлировать” WMSPanel под ваш собственный сайт и показывать статистику конечным пользователям (подробно про эти возможности написано в разделе Показ статистики конечным пользователям).

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

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

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


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

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

Ваш адрес 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>