Возможности Wowza Streaming Engine для трансляция с мобильного устройства

2016-07-30 13:56:00

Для обеспечения трансляции приемлемого визуального качества не обязательно иметь профессиональную съемочную технику и дорогие устройства кодирования сигнала. Большинство современных мобильных устройств оснащены компонентами, которые позволяют осуществить захват изображения в высоком разрешении с корректной цветопередачей. Форматы 720р и 1080р уже стали стандартом для большинства смартфонов и планшетов, а некоторые представляют поддержку UltraHD/4K разрешения. Для компрессии сигнала обычно используется встроенный сопроцессор, работа которого происходит независимо от основного CPU.

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

Теперь поговорим о тех основных способах, которые открывает Wowza для организатора трансляции в Интернете.

Существует 5 способов передачи потока на медиа сервер Wowza Streaming Engine:

1. Использование видеокамер и кодеров.

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

2. Стриминг с различных устройств и приложений.

В этом случае необходимо с нуля разработать собственное решение, которое позволит захватывать изображение с камеры или другого источника (например, платы видеозахвата). Основным требованием является возможность формирования RTSP/RTMP или другого совестимого с движком Wowza потока с поддержкой аутентификации (если того требуют правила безопасности). Для подобных решений Wowza не предоставляет никаких SDK или API комплектов, что существенно затрудняет работу и увеличивает время создания и отладки готового продукта. Команде программистов придется написать кодер видео сигнала, интерфейс приложения, средства его настройки.

3. Использование готового мобильного приложения Wowza GoCoder.

Представляет собой самый простой в плане трудозатрат способ публикации собственного контента через Wowza Streaming Engine. Все, что нужно – это просто скачать приложение на AppStore или Google Play, произвести его настройки и отдать поток. Никаких трудностей, никаких специальных знаний. Просто качаем и пользуемся.

4. Использование специализированной версии Wowza GoCoder с поддержкой брендирования.

Фактически это тот же GoCoder, только с собственным логотипом и несколькими полями настроек, которые могут быть заранее предопределены.

5. Создание собственного приложения на основе Wowza GoCoder с помощью комплекта SDK.

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

Способы 1 и 2 являются темами отдельного разговора, так как многообразие решений практически безгранично, а в рамках данной статью рассматривается именно мобильный стриминг.

Начнем со способа 3, как самого просто и понятного.

Пользователю достаточно скачать мобильное приложение через AppStore или Google Play, произвести настройки и передать поток на сервер Wowza. Количество настроек минимально, фактически, нужно только знать адрес сервера, логин и пароль, а также возможности устройства.

Для того, чтобы упростить пользователю процесс еще больше, можно начать стриминг с помощью перехода по специальной ссылке. Для этого администратор в панели управления Wowza Streaming Engine в разделе Manager должен зайти в раздел Sources (Live) и выбрать Wowza GoCoder. Там можно сформировать e-mail сообщение, содержащее ссылку на подключение. Далее пользователь открывает почту, проходит по ссылке, что приводит к запуску приложения GoCoder в уже настроенном состоянии.

Ссылка имеет следующий вид:

gocoder://configure/?publishHost=10.0.1.3&publishPort=1935&publishApplication=live&publishStream=wowza&publishUser=wowza&publishPassword=wowza&publishFrameSize=6

в ней содержится информация об адресе сервера, имени приложения и потока, имя и пароль, команда о необходимости автоматического старта, что будет передаваться (аудио и/или видео), частота кадров и разрешение.

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


Также стоит отметить, что если ваше устройство поддерживает режим 3D Touch Quick, то запуск приложение и начало стриминга могут быть запущены прямо с основного экрана без необходимости входить в интерфейс приложения Wowza Gocoder.

Если у пользователя есть часы Apple Watch, то он может с их помощью осуществлять управление процессом, выполняя команды СТАРТ/СТОП, получать информацию о длительности стриминга, а также картинку превью.

При необходимости можно предоставить доступ к трансляции, отправив ссылку по e-mail, либо опубликовав ее в Facebook или Twitter. Это очень удобно, так как позволяет экономить время, которое должна потратить целевая аудитория на поиск трансляции.

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

• Перерывы в трансляции во время звонков.

Если звонок принят, то стриминг автоматически заканчивается и возобновляется только после его окончания.

• Отсутствие поддержки мультизадачности.

Приложение должно работать не в фоновом режиме, иначе система отдаст приоритет другим задачам и остановит трансляцию.


• Задержка сигнала.

Задержка между Wowza Gocoder и сервером Wowza Streaming Engine составляет около 2-х секунд. Но если при просмотре она больше, необходимо на стороне сервера включить поддержку режима Low latency (редактированием файла Application.xml, или через меню настроек). Также следует помнить, что величина задержки будет выше для Apple HLS потока (iOS устройства), чем для Adobe HDS (Android устройства). Для уменьшения значения в случае с HLS можно попробовать настроить пакетизацию. • Расход заряда батареи.

Кодирование видео является ресурсоемким процессом, что в итоге сказывается на быстром расходе заряда аккумулятора. Рекомендуется включить в настройках GoCoder функцию Show Status Bar, чтобы контролировать процесс расхода энергии.

Способ 4 представляет собой тот же по сути инструмент, что и стандартное приложение. Отличие состоит в том, что появляется возможность кастомизации интерфейса, а именно вставка своего логотипа, использование собственной иконки, а также окон Splash, Help и About (заставка, справка, о программе). Кроме того, можно настроить некоторые поля на конкретные значения. Перечислять их в статье и подробно разбирать не имеет смысла, но можно сказать, что это базовые настройки, которые уже содержит загруженное приложение, уже настроенное на стриминг в определенное место. Данный способ удобен тогда, когда быстро нужно создать собственное приложение (точнее видимость, что оно уникальное), придать ему определенный стиль, выполнить ряд настроек и выложить для скачивания в AppStore и GooglePlay. Безусловно, это не полноценная замена собственной разработке, а лишь временное решение, например, для трансляции семинара или доклада.

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

Итак, пакет разработчика Wowza GoCoder SDK (Software Development Kit) позволяет создавать собственные кроссплатформенные решения, уровень кастомизации которых определяется, прежде всего, создателем приложения, а не только теми инструментами, которые входят в состав этого пакета.Собственный оригинальный дизайн (а не только логотип и справка), поля различных настроек, в том числе специализированных, и многое другое.

С помощью данного SDK можно управлять следующим функционалом: • Запись, кодирование, стриминг на широком спектре iOS и Android устройств с помощью единого API, объединяющего в себе различные платформы. • Подключение к медиа серверу Wowza Streaming Engine через единый конфигурационный интерфейс, включающий в себя механизмы стриминга данных и параметры авторизации. • Детализированные настройки для аудио и видео параметров, включая поддержку разрешения вплоть до 4K UHD. • Управление фокусом камеры, экспозицией, вспышкой, освещением (встроенный фонарик). • Настройка величины битрейта для передачи максимального качества потока.

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

На рисунке ниже показан элемент кода, который позволяет подключить модуль Wowza Gocoder, инициализировать камеру устройства, задать конфигурацию и адрес сервера, а также выполнить старт и стоп процесса стриминга. Части кода привязываются к элементам интерфейса, инициализирующим их запуск. Аналогичным способом производится настройка всех параметров приложения. Как видно, требуется всего лишь заменить отдельные части текста. Человек, знакомый с азами программирования, без труда напишет собственное приложение.

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

Помимо базовых компонентов, для создания полноценного интерфейса, которое будет корректно выполняться на мобильном устройстве, требуется встроить сторонние модули, которые станут выполнять определенные действия (Java JAR файлы для Android, специализированные библиотеки для iOS). SDK предоставляет лишь библиотеки и код, но не исполняющие элементы.

При разработке приложения также следует учитывать следующие особенности, дающие ряд преимуществ:
  • Классы ядра SDK могут быть реализованы в среде Java или C++ для портативных платформ, встроенных устройств и др.
  • Часть кода, являющаяся специфической для определенной платформы, ограничена классами кодера (encoder) и вещания (broadcaster).
  • Вещательные аудио и видео модули (broadcaster) отправляют на каждый зарегистрированный кодер (encoder) актуальные экземпляры прокси, а те в свою очередь отправляют команду начала трансляции (передачи потока) для каждого инициализированного вещательного модуля, позволяя использовать неограниченное количество одновременных кодеров (encoder)и вещательных модулей (broadcaster).



В завершении статьи хочется отметить, что те ресурсы, которые заложены как в функционал компонентов Wowza (речь идет о Wowza Streaming Engine и Wowza GoCoer), а также универсальность большинства мобильных платформ (особенно тут помогает Java), позволяют в том или ином виде реализовать практически любые задумки специалистам различногот профиля и квалифимкации таким образом, чтобы получить на выходе желаемый результат.