Wowza

This post is also available in: Английский

wowza

Wowza Media Server 3.1 — популярный медиа-сервер, с помощью которого можно организовать вещание потокового live видео и vod контента. Wowza Media Server поддерживает большое количество медиа-форматов (это одно из основных его преимуществ). В этой статье мы рассмотрим процесс организации live трансляции при помощи Wowza.

Wowza Media Server в отличии от многих других серверов написан и использует широко распространенный язык программирования Java. В сравнении с основным конкурентом Adobe Flash Media Server, предоставляет дополнительные возможности:

  • обновление – для обновления сервера в некоторых случая достаточно простой замены файлов .jar в директории «[install-dir]\lib» на более новые;
  • модернизация – с использованием среды разработки Wowza IDE (преднастроенная IDE Eclipse) вам предоставляется возможность создания и тестирования модулей, расширяющих функционал медиа-сервера;
  • мониторинг из коробки – благодаря возможности использования технологии управления и мониторинга JMX, вы сможете контролировать и управлять параметрами медиа-сервера и виртуальной машины java (JVM) в реальном времени;

Основные нарекания на Wowza относятся к стабильности и производительности. Например, вот здесь люди даже разработали плагин к nginx для RTMP стриминга, чтобы отказаться от Wowza.

Также Wowza обладает интересными возможностями по расширению основного функционала при помощи плагинов: транскодер, балансер, DRM и т.д. В случае Adobe такие плагины выходят за рамки медиа сервера как продукта (думаю, в этом они правы). Но для небольших проектов и максимальной простоты видео платформы сосредоточить всю логику работы с видео в одном модуле бывает очень полезно.

Wowza Media Server является кроссплатформенной разработкой и существуют сборки для разных платформ (что является следствием популярности и доступности Java на всех платформах):

  • Windows (.exe)
  • Mac (.dmg)
  • Linux (.rpm, .deb, .bin)

Для ознакомления вы можете загрузить пробную версию сервера и его дополнения. Для этого вам необходимо зарегистрироваться на официальном сайте Wowza Media Server. Функционал пробной версии не ограничен, но время использования составляет 30 дней.

Установка Wowza Server 3.1
Для установки сервера, предварительно необходимо установить Java 6 или более новую версию java.
В нашем случае был установлен пакет «jre-7u5-windows-i586» включающий необходимое для работы Wowza Media Server 3.1 и Wowza IDE 2. Установка Wowza Media Server стандартна и занимает несколько минут.

Wowza Install
Окно запущенного Wowza Media Server 3.1 на системе с ОС Windows 7

По умолчанию, для приема потоков используется порт 1935 (RTMP).
Проверить работоспособность сервера можно вызвав URL в браузере, например: «http://127.0.0.1:1935»

Wowza Check

Далее рассмотрим процесс организации мультибитрейт стриминга по HTTP Dynamic Streaming.

Для этого настроим приложение «dvr»:
1. Создать директорию «[install-dir]\conf\dvr».
2. Скопировать базовый конфигурационный файл «Application.xml» из «[install-dir]\conf» в директорию «[install-dir]\conf\dvr».
3. Создать директорию «dvr» в «[install-dir]\applications».
4. Внести следующие изменения в конфигурационный файл «[install-dir]\conf\dvr\Application.xml», указав следующие параметры:

1
<StreamType>live</StreamType>

— тип потока

1
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/dvr</StorageDir>

— директория хранения smil-файлов для приема нескольких синхронизированных потоков (multibitrate)

1
<LiveStreamPacketizers>dvrstreamingpacketizer</LiveStreamPacketizers>
1
<Recorders>dvrrecorder</Recorders>
1
<Store>dvrfilestorage</Store>
1
<WindowDuration>0</WindowDuration>

— ограничение длины записи. 0 – не ограничивать длину

1
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/dvr</StorageDir>

— директория записи входящих потоков

1
<ArchiveStrategy>delete</ArchiveStrategy>

— параметр определяет, что делать с ранее записанным потоком.
Если вещание потока остановлено и не возобновляется в течении 5 минут, ранее сохраненный поток будет удален.
Другие, возможные значения указаны в документации по Wowza Media Server

1
<HTTPStreamers>sanjosestreaming</HTTPStreamers>

— протокол вещания HTTP Dynamic Streaming
5. Создать в директории «[install-dir]\dvr» файл “live.smil” с перечнем вещаемых потоков:

<smil>
<head/>
<body>
<switch>
<video src="live1" system-bitrate="348000"/>
<video src="live2" system-bitrate="798000"/>
<video src="live3" system-bitrate="1048000"/>
</switch>
</body>
</smil>
</code>
Важно отметить, что в smil-файле необходимо указывать суммарный битрейт для каждого потока отдельно (video bitrate + audio bitrate). Как узнать общий битрейт потока будет описано далее.

Настройка источника вещания с помощью Flash Media Encoder Live 3.2
Adobe Flash Media Live Encoder (FME) – бесплатная программа Adobe Corp., предназначена для кодирования потокового видео или аудио потока и передачи его на медиа-сервер.

Для примера, в качестве источника данных будем использовать web-камеру

Flash Media Live Encoder 3.2

В параметрах Flash Media Encoder (FME) необходимо указать битрейт потока передаваемого на медиа-сервер Wowza. В нашем примере на сервер будут передаваться 3 потока с битрейтами: 300, 750, 1000.

h264 settings

Данные о битрейте потоков необходимо указать в файле «live.smil», приложения «dvr».

Указываем адрес Wowza Media Server и имя вещаемого потока.
В качестве протокола передачи будет использоваться протокол rtmp. В данном примере наименование потоков «live%i» указывает на вещание нескольких потоков с наименованием: live1, live2, live3. При вещании одного потока можно указать, например: «live1».

stream settings

Отображение потокового видео
Для просмотра вещаемого потока необходимо использовать плеер, расположенный в директории «[install-dir]\examples\LiveDvrStreaming\clientStrobe\DvrOSMFPlayer.html». Данный плеер является примером реализации открытого фрейморка OSMF, модификацией плеера Strobe Media Playback.

Указываем адрес манифеста: «http://127.0.0.1:1935/dvr/smil:live.smil/manifest.f4m?DVR»
После получения с FMLE потоков, серверу Wowza требуется некоторое время (около 1 минуты). Если манифест не подготовлен будет получено сообщение о недоступности манифеста.

playlist error

После создания манифеста его можно посмотреть указав в браузере URL:
«http://127.0.0.1:1935/dvr/smil:live.smil/manifest.f4m?DVR»

mainfest sample

После создания манифеста становится возможным отображение вещаемого потока:

streaming hds

Обратите внимание, что данные закачиваются сегментами (чанками), что говорит об использовании протокола HTTP Dynamic Streaming (HDS). Используя ползунок можно просмотреть ранее сохраненные данные.

Важно отметить, что в качестве плеера можно использовать другие реализации плеера или собственные разработки на базе фреймворка OSMF, но требуется тщательно следить за использованием/опустошением буфера. Симптомом опустошения буфера является «замораживание» изображения и звука на непродолжительное время.

Мониторинг состояния Wowza Media Server
Для мониторинга и управления параметрами медиа-сервера Wowza, виртуальной машины java можно использовать приложение «JСonsole», входящее в пакет Java JDK.

Для обеспечения доступа к интерфейсу JMX, необходимо:
• отредактировать файл «[install-dir]\conf\jmxremote.password» указав параметры доступа, например: «admin admin»
• включить поддержку JMX в конфигурационном файле «[install-dir]\Server.xml»
• указать параметры соединения с интерфейсом JMX удаленного сервера Wowza, например: «service:jmx:rmi://127.0.0.1:8084/jndi/rmi://127.0.0.1:8085/jmxrmi»

jconsole wowza

jmx wowza stats

В следующей статье мы рассмотрим использование Transcoder AddOn и нагрузочные характеристики Wowza при таком подходе.