This post is also available in: Английский
Wowza Transcoder – это платное дополнение к Wowza Media Server. Предоставляет возможность перекодирования входящего видео потока, в формат H.264 (MPEG-4) для разных устройств отображения. Для работы транскодера необходима установка 64-битной версии java. Wowza Media Server поддерживает технологии аппаратного транскодера: Intel Quick Sync hardware acceleration и Nvidia CUDA hardware acceleration.
Если транскодер настроен корректно, в процессе запуска сервера Wowza, при проверке аппаратного транскодера будет выведено сообщение, например:
1 2 3 4 | INFO server comment - JNI:TranscoderSession.isCUDAAvailable[_defaultVHost_: transcoder/_definst_/live1]: NVidia CUDA hardware acceleration is NOT available INFO server comment - JNI:TranscoderSession.isQuickSyncAvailable[_defaultVHost_: transcoder/_definst_/live1]: Intel Quick Sync hardware acceleration is available, version:1.1 |
В данном примере Wowza Media Server обнаружил аппаратную поддержку технологии Intel Quick Sync.
Конфигурирование приложения «transcoder»
1. Создать директорию «[install-dir]\conf\transcoder»
2. Скопировать базовый конфигурационный файл «Application.xml» из «[install-dir]\conf» в директорию «[install-dir]\conf\transcoder»
3. Создать директорию «transcoder» в директории «[install-dir]\applications»
4. Внести следующие изменения в конфигурационный файл «[install-dir]\conf\transcoder\Application.xml», указав следующие параметры:
1 2 3 4 5 | live-lowlatency sanjosestreamingpacketizer transcoder ${SourceStreamName}.xml,transrate.xml ${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles |
5. Скопировать базовый конфигурационный файл транскодера «[install-dir]\transcoder\templates\transrate.xml» в ту же директорию, указав новое имя «live1.xml»
6. Внести следующие изменения в конфигурационный файл «[install-dir]\transcoder\templates\live1.xml», указав параметры создаваемых потоков.
В данном примере создаются 3 потока:
- видео исходный битрейт (1000) + аудио исходный битрейт 48. Поток не транскодируется.
- видео битрейт 750 + аудио исходный битрейт 48
- видео битрейт 300 + аудио исходный битрейт 48
После этого в параметрах Flash Media Live Encoder (FMLE) необходимо указать битрейт потока передаваемого на медиа-сервер Wowza. В нашем примере на сервер будут передаваться поток с битрейтом 1000. Вещание нужно настроить на приложение transcoder.
Для просмотра вещаемого потока будем использовать OSMF Media Player. Данный плеер является примером использования открытого фрейморка OSMF. Указываем адрес манифеста для группы live1_all (имя группы указано в конфигурационном файле транскодера «[install-dir]\transcoder\templates\live1.xml») : «http://127.0.0.1:1935/transcoder/ngrp:live1_all/manifest.f4m»
После получения с FMLE потока, серверу Wowza требуется некоторое время на подготовку манифеста. После создания манифеста его можно посмотреть, указав в браузере URL: «http://127.0.0.1:1935/transcoder/ngrp:live1_all/manifest.f4m»
Нагрузочные характеристики
Сравнительный тест производительности при использовании Wowza Transcoder AddOn. Тест проводится для сравнения производительности двух систем, с поддержкой аппаратного транскодера и без него.
В тесте принимают участие 2 системы:
1. Система на базе бюджетного процессора Intel Core i3-2120 Sandy Bridge (CPU 3.30GHz, ОЗУ 4 Гб, Windows 7 Home x64, GPU Intel HD Graphics 200). Данная система поддерживает «Intel Quick Sync hardware acceleration».
2. Система на базе 2х серверных процессоров Intel Xeon E5620 Westmere (CPU 2.40 GHz, ОЗУ 8 Гб, Ubuntu 10.04.4 LTS). Данная система не имеет поддержки аппаратного транскодера.
Тест будет проводится с использованием траскодера, предварительно настроенного в ранее.
В результате работы транскодера создаются 3 потока:
- видео исходный битрейт (1000) + аудио исходный битрейт (48). Поток не транскодируется;
- видео битрейт 750 + аудио исходный битрейт 48;
- видео битрейт 300 + аудио исходный битрейт 48;
В дополнение, транскодер накладывает в углу видео картинки логотип «Wowza» (логотип «Wowza» расположен в директории «[install-dir]\content»). Для определения загрузки процессора будем использовать приложение JConsole. Данное приложение было описано в предыдущей статье про Wowza нашего блога.
Результаты теста
Бюджетный процессор и аппаратное ускорение Intel Quick Sync:
На графиках показано использование ресурсов в системе с процессором Intel Core i3-2120 во время работы транскодера. Нагрузка немного подрастала в моменты сбора мусора в JVM (Garbage Collector) до 12%. Но в среднем загрузка процессора составляла 9%.
Двухпроцессорный сервер:
На графиках показано использование ресурсов в системе с процессорами Intel Xeon E5620 во время работы транскодера. Нагрузка немного подрастала в моменты сбора мусора в JVM (Garbage Collector) до 8%. Но в среднем загрузка процессора составляла 7%.
В результате теста можно сделать промежуточные выводы:
- использование памяти на двух системах несколько отличалось и на системе с ОС Linux сбор мусора в JVM (Garbage Collector) проводился чаще. Пиковое значение использования оперативной памяти не отличалось и составляло примерно 170Мб;
- система с бюджетным процессором Intel Core i3-2120 благодаря использованию встроенного графического ядра, хорошо справилась с задачей транскодирования и незначительно уступила в производительности (на 2%) системе с более мощными серверными процессорами Intel Xeon E5620, не имеющими графического ядра;
Для увеличения нагрузки мы попробовали нагрузить Wowza одновременно двумя потоками с такими же настройками транскодирования и получили следующие результаты.
Бюджетный процессор и аппаратное ускорение Intel Quick Sync:
На графиках показано использование ресурсов в системе с процессором Intel Core i3-2120 во время работы транскодера c одним и двумя входящими видео потоками. Нагрузка на процессор при транскодировании 2х потоков нелинейно возросла и составила в среднем 36%.
Двухпроцессорный сервер:
На графиках показано использование ресурсов в системе с процессорами Intel Xeon E5620 во время работы транскодера c одним и двумя входящими видео потоками. Нагрузка на процессор при транскодировании 2х потоков нелинейно возросла и составила в среднем 30%.
В результате теста можно сделать промежуточные выводы:
- динамика использования памяти на двух системах отличалась незначительно и в пике составила 250 – 300 Мб;
- система с бюджетным процессором Intel Core i3-2120 уступила в производительности системе с серверными процессорами Intel Xeon E5620 в среднем на 6%. Возможной причиной увеличения отставания является слабое видео ядро используемое Wowza при транскодировании;
- обе системы показали нелинейное увеличение нагрузки на процессор при транскодировании двух потоков;
- стоит быть очень аккуратным при расчетах нагрузки в такой схеме, есть риск нестабильной работы;
В заключение хотелось бы добавить, что транскодинг на Java — это оригинально 🙂 Впрочем, как показано Выше — это работает вполне приемлемо и позволяет весьма бюджетно организовать транскодинг live потоков. В своих проектах мы используем либо промышленные транскодеры, либо open source альтернативы на выделенных серверах (ffmpeg, avconv, VLC).