Транскодирование медиа потоков с помощью Wowza Transcoder Addon

2015-11-29 20:34:00

Зачем нужно транскодирование (преобразование параметров) IP-потока.

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

Медиа сервер Wowza Streaming Engine поддерживает транскодирование ( и трансрейтинг ) IP потоков всех наиболее часто используемых форматов. Процесс транскодирования представляет собой преобразование типа компрессии ( например MPEG2 видео в H.264 и MPEG1 аудио в AAC ), трансрейтинг позволяет осуществить преобразование величины битрейта и разрешения без изменения тип компрессии.

Как происходит обработка сигнала.

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

За преобразование сигнала отвечает специальный модуль Wowza Transcoder Addon, входящий в базовый состав Wowza Streaming Engine.[1] Обработка видео потока может происходить:

  • С помощью мощности процессора. Это наиболее ресурсоемкий способ генерации потоков.
  • С помощью видеоадаптера, встроенного в CPU с поддержкой технологии Quick Sync.
  • С помощью дискретного видеоадаптера nVideo, поддерживающего технологию NVENC;

Очевидным является тот факт, что чем мощнее платформа, тем больше потоков она сможет сгенерировать. На первый взгляд, кажется, что и по стоимости выходит также. Чем дороже компоненты, тем эффективнее они будут работать. Так ли это на самом деле, мы и рассмотрим в данной статье. Для проведения сравнения будем руководствоваться официальными данными, приведенными компанией Wowza Media Systems на своем форуме (https://www.wowza.com/forums/content.php?332-Wowza-Transcoder-AddOn-Performance-Benchmark ).

Тестирование проходило следующим образом:

Wowza Transcoder получает в качестве источника от 1 до 8-ми потоков. Каждый источник должен быть преобразован в несколько потоков, которые могут отличаться разрешением и битрейтом на выходе. В качестве аппаратной платформы рассматривались серверные платформы на базе Intel Xeon E3 Series, двухпроцессорные системы на Intel Xeon X5650 и аренда вычислительной платформы Amazon EC2 Instance.

Было выполнено 3 вида тестов:

  1. Трансрейтинг потока 720р;
  2. Трансрейтинг потока 1080р;
  3. Транскодинг потока MPEG2 720р.

Характеристики серверных платформ представлены в таблице ниже.

 

Серверная платформа

Операционная система

GPU ускорение

1

  • Процессор Single Intel Xeon CPU E3-1285 V3 @ 3.60GHz , 4 cores
  • Материнская плата Supermicro X10SAE
  • Объем оперативной памяти 32 Гб

MS Windows 7 64bit Ultimate

Нет

2

Intel HD 4600 (Intel Quick Sync)

3

NVIDIA QUADRO K5000 (NVENC)

4

  • Процессор Single Intel Xeon CPU E3-1285 V3 @ 3.60GHz , 4 cores
  • Материнская плата Supermicro X10SAE
  • Объем оперативной памяти 32 Гб

Ubuntu 12.04 (64-bit)

Нет

5

Intel HD 4600 (Intel Quick Sync)

6

NVIDIA QUADRO K5000 (NVENC)

7

  • Процессор Dual Intel Xeon CPU X5650 @ 2.66GHz , 12 cores total
  • Материнская плата SuperServer 7046GT-TRF 4U Xeon DP 4xGPU Ready
  • Объем оперативной памяти 32 Гб

MS Windows 8.1 64bit

Нет

8

NVIDIA QUADRO K5000 (NVENC)

9

Ubuntu 12.04 (64-bit)

Нет

10

NVIDIA QUADRO K5000 (NVENC)

11

  • EC2 Instance: Extra Large Instance - m1.xlarge (EC2 Instance: Extra Large Instance - m1.xlarge)
  • Объем оперативной памяти 15 Гб

Amazon Linux

Нет

12

  • High-CPU Extra Large Instance - c3.8xlarge (32 virtual cores with 3.37 EC2 Compute Units each)
  • Объем оперативной памяти 60 Гб

Amazon Linux

Нет

 

Разработчики компании Wowza Media провели 3 теста со следующими параметрами исходного сигнала: 720р h.264, 1080р h.264 и 1080р MPEG2.

Для тестирования сигнала 720р h.264 были выбраны следующие параметры входного потока:

  • Компрессия видео: H.264
  • Размер кадра: 1280x720 пикселей
  • Частота кадров: 24 кадра/сек
  • Видео битрейт: 5.588 Мбит/сек
  • Компрессия аудио: AAC
  • Частота аудио сигнала: 48 кГц
  • Количество аудио каналов: Стерео
  • Аудио битрейт: 97 кбит/сек.

 

На выходе необходимо получить от 1 до 8-ми потоков 720p, 360p, 240p, 160p. Графики, представленные ниже, следует понимать следующим образом: горизонтальная шкала показывает количество входных потоков, каждый из которых кодируется в 720p, 360p, 240p и 160p. То есть, если на входе 8 различных потоков, то на выходе их будет 8х4=32 потока с различными параметрами.

Если проанализировать полученные графики (для начала, рисунок 1), можно сделать очень интересные выводы. Например, процессорная обработка сигнала является наименее эффективной, процессор Intel Xeon E3-1285V3 не в состоянии сгенерировать более 4-х потоков для ОС Windows 7. При этом его загрузка возрастает более 75%, что недопустимо, так как вероятность возникновения критической ситуации и возможности сбоя в работе сильно возрастает. Это вполне закономерный результат, так как процессоры данной серии имеют 4 ядра и отлично справляются с одним потоком вычислений, но гораздо хуже ведут себя при выполнении большего количества параллельных операций.


 

Рисунок 1. Результаты трансрейтинга для платформы 1-6 для исходного потока 720р.

Самыми интересными получились результаты работы на базе встроенной в процессор технологии Intel Quick Sync. График представляет собой прямую линию, то есть нагрузка возрастает плавно и ровно, что говорит о высокой стабильности работы. Нагрузка всегда находится в норме. Единственным серьезным минусом является отсутствие возможности наращивания мощностей. Как только ресурс исчерпан, остается либо менять процессор на более современный (хотя его эффективность еще нужно проверить), либо приобретать дополнительный сервер. Платформ поддерживающих несколько CPU с QuickSync не существует.  Но во многих случаях такой вариант очень привлекателен и по цене, и по эффективности, и по надежности, и по энергопотреблению.

Применение GPU-кодирования на базе видеокарты NVIDIA QUADRO K5000 показывает очень высокий запас производительности системы. Никаких проблем при обработке до 8-ми входных потоков. Нагрузка возрастает относительно стабильно и находится в норме, то есть возникновение критической ситуации маловероятно. К сожалению, установка второй видеокарты не позволит удвоить количество обрабатываемых потоков, однако увеличить производительность еще на 15-20% вполне реально. Не стоит забывать, что на сегодняшний день плата К5000 не является передовой, на рынке присутствует обновленная К5200, а также последняя модель линейки М5000. Вероятность того, что 2 видеокарты последнего поколения дадут соответствующий пророст производительности, очень высока.

 

Рисунок 2. Результаты трансрейтинга для платформы 7-8 для исходного потока 720р.

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

 

Теперь перейдем к трансрейтингу сигнала 1080р со следующими параметрами входного потока:

  • Компрессия видео: H.264
  • Размер кадра: 1920x1080 пикселей
  • Частота кадров: 24 кадра/сек
  • Видео битрейт: 9.7208 Мбит/сек
  • Компрессия аудио: AAC
  • Частота аудио сигнала: 48 кГц
  • Количество аудио каналов: Стерео
  • Аудио битрейт: 97 кбит/сек.

 

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

Что получилось, видно из графиков на рисунках 3-4. Относительно выбора решения и распределения нагрузки результаты получились идентичными. Но стоит обратить особое внимание на то, что при повышении битрейта и разрешения исходного потока нагрузка тоже возрастает, но в результате ни одна из конфигураций не в состоянии перекодировать 8 потоков, как это было в предыдущих тестах для 720р. Лучший результат производительности показал облачный сервис от Amazon, а из серверных платформ 2-х процессорная конфигурация с использованием QUADRO K5000. Хотя говорить о росте производительности на данной аппаратной платформе за счет добавления новой видеокарты уже не приходится. Придется переходить на современные технологии.

 

Рисунок 3. Результаты трансрейтинга для платформы 1-6 для исходного потока 1080р.

 

Рисунок 4. Результаты трансрейтинга для платформы 7-8 для исходного потока 1080р.

 

 

Возрастание нагрузки и выбор процессорной мощности для трансрейтинга являются очевидными, и подобрать конфигурацию не составит большого труда исходя из полученных данных. Для выбора аппаратных компонентов, которые доступны к заказу в данный момент, можно воспользоваться тестами производительности процессоров, например, ресурсом nix.ru, где хорошо отслеживать также и наличие товара, либо ресурсом http://cpuboss.com/compare-cpus. На нем можно провести детальное сравнение процессоров.  Стоить только помнить о том, что все тесты (в том числе и приведенные в данной статье) не являются эталонными. Нужно закладывать примерно 10-15% погрешности, а также помнить о том, что пиковая нагрузка на процессор не должна превышать 70% от его максимальной вычислительной мощности.

А теперь перейдем к результатам транскодирования >MPEG2 в H.264. Вряд ли стоит ожидать принципиально других показателей, если рассматривать производительность конфигурацию друг относительно друга. Тем не менее, важно убедиться в этом.

На входе у нас потоки со следующими параметрами:

  • Компрессия видео: MPEG-2
  • Размер кадра: 1280x720 пикселей
  • Частота кадров: 23.98
  • Видео битрейт: 3.0 Мбит/сек
  • Компрессия аудио: MPEG-1 Layer 2
  •  Частота аудио сигнала: 48 кГц
  • Количество аудио каналов: Стерео
  • Аудио битрейт: 128 кбит/сек.

 

Итак, графики ниже полностью подтверждают наше предположение.

 

Рисунок 5. Результаты транскодинга для платформы 1-6 для исходного потока MPEG2 720р.

 

Рисунок 6. Результаты транскодинга для платформы 7-8 для исходного потока MPEG2 720р.

 

На рисунке 7 показаны величины кадров основных разрешений. Картинка дает очень наглядное представление о том, как будут расходоваться вычислительные мощности при увеличении размера кадра. Это стоит учитывать при выборе платформы и расчете требуемых мощностей. Ведь, на первый взгляд, конечный потребитель останется доволен как от 720р, так и от 1080р. Однако, вычислительных мощностей потребует в 2 раза больше. Стоит серьезно подумать о том, на сколько рационально работать с максимальным качеством, и соответствует ли это заложенному бюджету.

 

 

Рисунок 7. Визуальное представление сравнения размеров кадра для общепринятых стандартов изображения.

Если суммировать все вышесказанное и просто внимательно посмотреть на полученные данные, то мы получим вот такие выводы:

  1. При необходимости транскодирования нескольких потоков обработка средствами CPU является наименее эффективным методом. Количество потоков транскодируемых системой сильно зависит от суммарного количества ядер и тактовой частоты процессорной подсистемы. Что в свою очередь может потребовать неоправданных финансовых затрат.
  2. Для создания масштабируемой системы транскодирования можно использовать процессоры с встроенным графическим ядром на базе технологии QuickSync. Это позволит как сэкономить рабочий ресурс и энергопотребление, так и финансовые расходы по сравнению с использованием карт NVIDIA. Фактически, это самый рациональный по стоимости вариант.  Рабочие станции, rack сервера, либо даже Blade серверные системы на базе чипсета С226.
  3. В том случае, когда количество исходных потоков велико, а возможности по размещения оборудования ограничены, использование видеокарт с поддержкой технологии кодирования NVENC даст наилучший результат. GPU кодирование позволит получить систему, которая без особых проблем справится с десятками потоков, сохраняя при этом запас ресурса. Можно построить довольно компактные транскодеры, например, на платформах Supermicro, которые предназначены специально для размещения максимального количества графических процессоров на единицу объема. К сожалению, стоимость конечного решения будет очень немаленькой.
  4. Безусловно, можно сделать еще огромное количество разных выводов о том, где лучше Linux, а где Windows, как можно где-то выиграть лишние 5-7% производительности и так далее. Все это будут довольно приблизительные вычисления.
  5. В том случае, если требуется временно повысить производительность, можно арендовать облачные сервисы (Amazon). Но это целесообразно лишь в том случае, если необходимость возникает редко, она не постоянна, либо срочность очень высока.

 


[1] Ранее данных модуль было необходимо приобретать отдельно, цена составляла порядка 500 долларов за каждый входящий поток. Начиная с 4-й версии модуль вошел в базовый состав и не требует дополнительных затрат.