Wowza REST API

2015-12-20 13:07:45

Wowza Streaming Engine представляет собой гибкое и функциональное решение для передачи потокового контента практически на любые платформы. Богатство возможностей обеспечивает решение практически любых задач. Wowza Streaming Engine может быть настроен как через правку конфигурационных файлов, так и через имеющийся веб-интерфейс. Предоставляемые возможности содержат базовые настройки, позволяя принять потоки, настроить параметры стриминга, записи и транскодирования, и многое другое. Администратор может протестировать потоки с помощью встроенного плеера, сгенерировать ссылки на отдельные потоки и VOD файлы, проверить величину нагрузки на систему. И этого вполне достаточно, если не стоит задачи создания действительно функционального продукта, который будет сочетать в себе не только возможности «ретранслятора» потоков, но и также множество других функций, которые понадобятся при проектировании собственного медиа портала, но отсутствующие в функционале Wowza. При всем богатстве возможностей административного интерфейса никакой графической оболочки для того, чтобы предоставить все удобства и сервисы конечному потребителю с Wowza не предоставляется. Такой подход позволяет разработчикам реализовать собственные интерфейсы согласно задаче, а не привязываться к определенным компонентам. Оформление ресурса почти всегда является отдельной разработкой, которая имеет уникальный стиль, свои особенности реализации, специальные модули. Все это призвано обеспечить тот способ взаимодействия, который в полной мере удовлетворит конечного потребителя и провайдера услуги. Эти дополнительные возможности (написанные самостоятельно или являющиеся частью сторонних разработок) должны быть совмещены с функциями медиа сервера, чтобы дать администратору конечного продукта единую рабочую среду вместо разрозненных компонентов. Именно поэтому разработчики предоставляют REST [1] API (Application Programming Interfaces), то есть средства, которые без написания сложного программного кода позволяют встроить требуемый функционал в собственную разработку.

Изучить работу API удобно с помощью утилиты cURL . Утилита представляет собой командную строку для передачи запросов по протоколу HTTP/HTTPS, что и нужно при работе с web-ресурсами. Также удобно пользоваться плагином Poster для браузера FireFox.

HTTP запросы направляемые API могут быть следующих методов:
  1. получение - GET
  2. добавление - POST
  3. модификация - PUT
  4. удаление - DELETE


Таким образом, с их помощью всегда можно добавить объект, изменить его свойства, отследить статус, а при необходимости удалить. Для обмена данными поддерживаются форматы JSON и XML. Оба из них имеют свои преимущества и являются универсальными и кроссплатформенными.

Формат JSON изначально предназначался для использования совместно с Java приложениями и является очень удобным для обмена данными между клиентом и сервером или между 2-мя серверами. Внутри сообщений могут применяться функции JavaScript. Но, что не менее важно, его поддержка встроена в PHP, начиная с версии 5.2.0, с преобразованием типов данных PHP/JSON на лету через применение функций json_decode() и json_encode( ).

Запрос должен обрабатывать данные (принимать и передавать их) в определенной кодировке, это указывается в заголовке:

--header 'Accept:application/json; charset=utf-8'

Формат XML представляет собой язык разметки, основанный на применении сущностей, инструкций обработки и комментариев. Все сущности имеют взаимосвязи, а разработчик может легко ими оперировать и использовать при создании собственных продуктов и сценариев. Это универсальный язык разметки, где можно создавать различные объекты, не привязываясь жестко к определенному синтаксису, как этот происходит в языках программирования и разметки типа HTML. Кроме того, поддерживается Unicode, что делает документ не просто определенным сценарием, но и позволяет корректно читать его на любых платформах.

Запрос на XML длиннее, чем JSON, и имеет следующий вид:

--header 'Accept:application/xml; charset=utf-8'

--header 'Content-type:application/xml; charset=utf-8'

Разработчик не ограничен использованием лишь какого-то одного типа данных, при создании веб приложения он может использовать JSON и XML одновременно в зависимости от того, какую задачу ему требуется выполнить.

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

curl -X (VERB) (Headers) http://[your-wowza-server]:8087/v2/[path-to-resource]

На практике готовая команда выглядит следующим образом:

curl -X VERB Headers http://[your-wowza-server]:8087/v2/servers/_defaultServer_/(publishers|streamfiles|etc)

Интерфейс REST API включен в комплект поставки Wowza Streaming Engine и не требует покупки дополнительной лицензии. Все методы работы с API необходимые для создания полноценных продуктов описаны в документации. Однако, сразу после инсталляции приложения на сервер работа с документацией недоступна. Пакет требует скачивания актуальной версии на сайте Wowza Media, его установку и настройки доступа. Для предоставления доступа необходимо отредактировать конфигурационный файл [install-dir]/conf/Server.xml. это сделано для того, чтобы ограничить доступ к данной документации третьих лиц в том случае, если сервер имеет внешнее соединение. Рекомендуется произвести отладку во внутренней сети, после чего доступ должен быть закрыт. Для получения информации разработчик должен обратиться к сервису Swagger, представляющему собой специальную среду для создания интерактивной документации, которая выводится в виде данных в формате JSON на статичной веб-странице.

Это очень гибкий инструмент как для разработчика API, так и для тех, кто проектирует собственный сервис. Фактически создаваемая в Swagger документация мгновенно превращается в конкретные команды и примеры кода.

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

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

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

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



[1] REST (Representational State Transfer) — «передача репрезентативного состояния, метод взаимодействия компонентов распределённого приложения в сети Интернет, при котором вызов удаленной процедуры представляет собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса.