H.265 (HEVC) — маркетинговый трюк или что-то большее? Что несёт с собой грядущая смена стандарта кодирования

H.265 (HEVC) — маркетинговый трюк или что-то большее? Что несёт с собой грядущая смена стандарта кодирования

  • Перевод

Текущую ситуацию в области медиакодеков, можно описать буквально несколькими словами: простые решения себя исчерпали. С каждым годом материал для кодирования становится все сложнее, а требования к качеству результата – все выше. В этих условиях, когда лобовая атака уже не дает эффекта, особое значение приобретает оптимизация как кодирования, так и воспроизведения медиа под конкретные платформы с использованием их самых современных возможностей. Чего можно добиться такой оптимизацией, мы покажем на примере перспективного кодека Н.265. В качестве целевой платформы рассмотрим серверное решение Intel - процессор Xeon.

Краткое описание H.265/HEVC

Стандарт H.265/HEVC (High-Efficiency Video Coding - высокоэффективное кодирование видео) - это самый последний стандарт видеокодека, разработанный совместно Международным союзом электросвязи ITU-T и ISO/IEC. Цель этого стандарта - повысить эффективность сжатия и снизить потери данных. H.265/HEVC, по сравнению с предыдущим стандартом H.264/AVC, обладает вдвое более высокой степенью сжатия при равном субъективном качестве изображения. Технология HEVC позволяет поставщикам видео передавать высококачественные видеоматериалы с меньшей нагрузкой на сеть.
Отметим основные функциональные новшества, примененные в Н.265:
  • Особые возможности для произвольного доступа и сращивания цифровых потоков. В H.264/MPEG-4 AVC цифровой поток должен всегда начинаться с блока адресации IDR, а в HEVC поддерживается произвольный доступ.
  • Изображение разделяется на единицы дерева кодирования (CTU), каждая из которых содержит блоки дерева кодирования (CTB) яркости и цветности. Во всех прежних стандартах кодирования видео использовался фиксированный размер массива для выборок яркости - 16×16. HEVC поддерживает блоки CTB разного размера, который выбирается в зависимости от потребностей кодировщика с точки зрения памяти и вычислительной мощности.
  • Каждый блок кодирования (СВ) может быть рекурсивно разделен на блоки преобразования (ТВ). Разделение определяется остаточным квадродеревом. В отличие от прежних стандартов в HEVC один блок ТВ может охватывать несколько блоков предсказания (РВ) для перекрестных предсказываемых единиц кодирования (CU).
  • Направленное предсказание с 33 различными направлениями ориентации для блоков преобразования (TB) размером от 4×4 до 32×32. Возможное направление предсказания - все 360 градусов. HEVC поддерживает различные методики кодирования предсказания интракадров.
H.265/HEVC налагает исключительно высокие требования по вычислительной мощности и на клиентские устройства, и на внутренние серверы транскодирования.

Проблемы производительности HEVC

Существующий проект HEVC Test Model (HM) реализует только основную функциональность стандарта; фактическая производительность по-прежнему далека от необходимой в реальной среде. Два основных недостатка этого проекта:
  • Отсутствие параллельной схемы.
  • Неэффективная настройка векторизации.


Рисунок 1. Профиль проекта HM - параллельная работа потоков


Рисунок 2. Профиль проекта HM - ресурсоемкий код

Этот кодек HEVC потребляет, по сравнению с H.264, в 100 раз больше ресурсов ЦП на стороне сервера и в 10 раз больше - на стороне клиента.
Кодек H.265/HEVC привлек внимание множества компаний и организаций во всем мире, что повлекло оптимизацию его производительности и фактическую разработку. Существует несколько проектов с открытым исходным кодом.

  • OpenHEVC (совместим с HM10.0, оптимизация декодера)
  • x265 (совместим с HM, распараллеливание и векторизация)
Для оценки производительности кодировщика x265 на платформе с процессорами Intel® Xeon® (E5-2680, 2,7 ГГц, 8*2 физических ядер, кодовое название - Sandy Bridge) мы запустили видео с разрешением 720p и частотой 24 кадра в секунду. Разработчики x265 проделали большую работу для оптимизации исходного стандарта с целью распараллеливания обработки задач и данных. Тем не менее, наш тест показал, что кодек может использовать лишь 6 ядер в системе с 32 логическими ядрами (с включенным SMT). Таким образом, кодек далеко не в полной мере использует ресурсы современных многоядерных платформ.

Рисунок 4. Проект X.265 с настройкой Intel® SIMD

В проекте x265 также были использованы инструкции Intel® SIMD (автогенерация компилятором), что обеспечило повышение производительности более чем на 70%. Вместе с дальнейшей оптимизацией компиляторными опциями, компилятор Intel обеспечивает удвоение производительности на платформе IA. Тем не менее, производительность кодировщика по-прежнему существенно ниже, чем требуется для кодировщика реального времени, особенно для видео высокой четкости с разрешением 1080p.
Ниже мы покажем результаты, достигнутые китайской компанией Strongene при поддержке специалистов компании Intel на пути оптимизации созданного ей кодека H.265/HEVC под различные платформы Intel.

Оптимизация HEVC под платформу Intel® Xeon™

Основную часть самых ресурсоемких функций по обработке видео и изображений составляют интенсивные вычисления блочных данных. Для их оптимизации можно использовать инструкции векторизации Intel® SIMD. В кодировщике в составе кодека Strongene, согласно данным профилирования, с помощью инструкций Intel SSE можно провести ручную векторизацию всех наиболее ресурсоемких функций, таких как кадровая интерполяция низкой сложности с компенсацией движения; целочисленное преобразование без транспозиции; преобразование Адамара; вычисление сумм абсолютных разностей (SAD)/квадратов разности (SSD) с наименьшим избыточным использованием памяти. Мы включили инструкции Intel SSE в виде интринсик-функций, как показано на рис. 5.


Рисунок 5. Пример включения инструкций Intel® SIMD/SSE в кодеке Stongene

Разработчики Strongene переписали все ресурсоемкие функции, чтобы добиться наибольшего прироста производительности кодировщика. На рис. 6 показаны наши данные профилирования в сценарии кодирования видео стандарта 1080p с помощью HEVC. Видно, что 60% ресурсоемких функций обрабатываются инструкциями Intel SIMD.


Рисунок 6. Результаты профилирования функций кодирования Strogene

Инструкции Intel AVX2 с вычислением 256-разрядных целочисленных значений обладают вдвое более высокой производительностью по сравнению с прежним кодом Intel SSE, работающим со 128-разрядными значениями. Набор инструкций Intel AVX2 поддерживается платформой
Intel Xeon (Haswell), выпуск которой начат в 2014 году. Для оценки производительности встроенных функций Intel AVX2 мы используем распространенное вычисление сумм абсолютных разностей для блока 64*64.

Таблица 1. Результаты реализации Intel® SSE и Intel® AVX2

Циклы ЦП Исходный код Intel® SSE Intel® AVX2
Запуск 1 98877 977 679
Запуск 2 98463 1092 690
Запуск 3 98152 978 679
Запуск 4 98003 943 679
Запуск 5 98118 954 678
Среднее 98322,6 988,8 681
Ускорение 1,00 99,44 144,38

Как видно из таблицы 1, применение инструкций Intel SSE и Intel AVX2 обеспечивает повышение производительности в 100 раз, при этом код Intel AVX2 дополнительно выигрывает еще 40% по сравнению с Intel SSE.
Как мы видели ранее, в большинстве существующих реализаций используются не все ядра многоядерных платформ. Опираясь на последнюю многоядерную архитектуру Intel Xeon с параллельной зависимостью между алгоритмами на основе CTB, разработчики Strongene предлагают заменить исходные методы OWF и WPP параллельной структурой IFW, а затем разработать трехуровневую схему управления потоками, чтобы гарантировать полное использование структурой IFW всех ядер ЦП для ускорения кодирования HEVC.


Рисунок 7. Параллельная работа потоков и использование ЦП в кодировщике Strongene

За счет применения новой параллельной структуры WHP и полной реализации инструкций Intel SIMD соответственно на уровне задач и уровне данных разработчикам кодировщика Strongene удалось добиться весьма значительного повышения производительности на процессорах x86 для видео с разрешением 1080p, используя вычислительные ресурсы всех ядер, как показано на рис. 8.

Дальнейшая настройка с использованием SMT/HT

Также представляет интерес зависимость производительности кодека от включения в системе широко распространенной на всех платформах с архитектурой Intel одновременной многопоточности (SMT), также называемой технологией гипертрединга (HT).

Таблица 2. Скорость кодирования Strongene HEVC на платформе Intel® Xeon®


Как видно из таблицы (показано желтым цветом) на платформе Ivy Bridge (процессор Intel Xeon E5-2697 v2 для отключенного SMT кодирование видео HEVC с разрешением 1080p осуществляется в реальном времени!

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

Таблица 3. Сравнение производительности кодеков H.264 и H.265


В таблице 3 видно, что кодек H.265/HEVC снижает объем данных на 50% при сохранении прежнего качества видеоизображения.

H.265/HEVC, по всей видимости, станет наиболее популярным стандартом видео в ближайшее десятилетие. Во множестве приложений и продуктов мультимедиа в настоящее время реализуется поддержка HEVC. В этом документе мы реализовали основанное на ЦП полнофункциональное решение HEVC реального времени на платформах Intel с новыми технологиями IA. Наше оптимизированное решение на базе процессоров Intel развернуто в компании Xunlei, занимающейся предоставлением услуг видео через Интернет, и будет способствовать повсеместному внедрению и распространению технологии H.265/HEVC.

Видео 4K занимает тонну пространства, что затрудняет загрузку и потоковое вещание в лучшем качестве. К счастью, одна технология меняет это, и она известна как High Efficiency Video Coding (HEVC) или H.265 .

Потребуется много времени, чтобы эта новая технология стала вездесущей, но это происходит: 4K UHD Blu-ray использует HEVC, VLC 3.0 воспроизводить 4K с помощью надежного HEVC, а iPhone может даже сохранить записанное видео в HEVC для экономии памяти.

Но как это работает, и почему так важно для видео 4K?

Текущий стандарт: AVC/H.264

Когда вы смотрите диск Blu-ray, видео на YouTube или фильм из iTunes, все они имеют идентичный исходный файл, который был получен в студии редактирования. Чтобы разместить этот фильм на диске Blu-ray или сделать его достаточно маленьким, чтобы удобно загружать из интернета, видео должно быть сжато .

AVC также использует межкадровое сжатие , которое рассматривает несколько кадров и отмечает, какие части кадра меняются, а какие нет. Алгоритм сжатия также развивает фрейм на макроблоки и говорит: «Знаешь что? Эти куски не меняются 100 кадров подряд, поэтому давайте просто отображать их снова, вместо того, чтобы хранить все части изображения 100 раз». Это может значительно уменьшить размер файла.

Это всего лишь два упрощенных примера использования методов AVC/H.264 . Но, они позволяют сделать видеофайл более эффективным, не ставя под угрозу качество.

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

HEVC/H.265 сжимает видео более эффективно

Высокоэффективное видеокодирование, также известное как HEVC или H.265 , является следующим шагом в этой эволюции. В нем реализовано множество методов, используемых в AVC/H.264, чтобы сделать сжатие видео еще более эффективным .

Например, когда AVC просматривает несколько кадров на наличие изменений, макроблоки могут иметь несколько разных форм и размеров, максимум до 16×16 пикселей. С HEVC эти фрагменты могут быть размером до 64×64, что намного больше, чем 16×16, это означает, что алгоритм может запоминать меньшее количество фрагментов, тем самым уменьшая размер общего видео.

Опять же, в HEVC используются другие методы, но это одно из самых больших улучшений – оно позволяет HEVC сжимать видео вдвое сильнее, чем AVC, при том же уровне качества. Это особенно важно для видео 4K , которое занимает огромное пространство с AVC. HEVC делает 4K видео намного более удобным для потоковой передачи, загрузки или копирования на ваш жесткий диск.

HEVC медленнее без аппаратного декодирования

HEVC является утвержденным стандартом с 2013 года, так почему его не используют во всех видео?

Алгоритмы сжатия H.265 сложны – для вычисления этого процесса на лету требуется очень много «математики». Существует два основных способа, которыми компьютер может декодировать это видео: программное декодирование , при котором он использует процессор компьютера для выполнения этих расчетов, и аппаратное декодирование , при котором он переносит нагрузку на графическую карту (или интегрированный графический чип на процессоре). Графическая карта намного эффективнее, если у нее есть встроенная поддержка кодека видео, которое вы пытаетесь воспроизвести.

Таким образом, хотя многие ПК и программы могут пытаться воспроизвести видео HEVC, оно может «заикаться» или быть очень медленным без аппаратного декодирования. Таким образом, HEVC не принесёт много пользы, если у вас нет видеокарты и видеопроигрывателя, которые поддерживают аппаратное декодирование HEVC .

Это не проблема для автономных устройств воспроизведения. 4K проигрыватели Blu-ray, в том числе Xbox One, уже сконструированы с учетом HEVC. Но когда дело доходит до воспроизведения видео HEVC на компьютере, всё становится сложнее.

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

  • Intel 6-го поколения «SkyLake» или более новые процессоры
  • AMD 6-го поколения «Carizzo» или более новые APU
  • NVIDIA GeForce GTX 950, 960 или более новые видеокарты
  • AMD Radeon R9 Fury, R9 Fury X, R9 Nano или более новые графические карты

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

С течением времени большее количество компьютеров сможет обрабатывать видео такого типа, и больше плееров будут поддерживать H.265. Для этого может потребоваться некоторое время, чтобы стандарт стал повсеместным, и до этого Вам придётся хранить свои 4K видео в AVC/H.264 при больших размерах файлов (или сжимать их больше и терять качество изображения). Но чем шире будет поддерживаться больше HEVC/H.265, тем лучше будет видео.

Очередное обновление Adobe Premiere Pro CC 2015 до версии 9.1 принесло возможность экспорта в долгожданном H265. Но многие не ожидали, что их мощные компьютеры новый кодек мощными совсем не считает.

Честно говоря, сравнивать скорость кодирования новым кодеком H265 (High Efficiency Video Coding) с кодеком H264 - дело совершенно неблагодарное. HEVC предлагает нам практически вдвое меньший битрейт при одинаковом визуальном качестве картинки, в сравнении с H264. Особенно это актуально для 4K контента и, тем более для видео в разрешении 8K.

Прогресс неизбежен и обновлять монтажные компьютеры все равно придется. Я же хочу сравнить время рендера в проекте с разрешением FullHD.

Параметры видео: файлы*.MTS, кодек AVC, 24 Mbs, длительность 04:10.

Эффекты на timeline: Lumetry Color (задействованы LUT, Levels, Saturation, Sharpen, Vignette), Magic Bullet Looks (задействован Cosmo).

Тестовый компьютер:

Процессор: 6-core Intel Core i7 5820K @ 3,8 GHz

Оперативная память: 32 GB DDR4 2400 MHz

Сделаем рендер этого видеоролика, замеряя время и наблюдая за загрузкой системы.

Настройки экспорта в H264: Level High 4.2 VBR 1pass 15-20 Mbps. Время экспорта 81% - 10:18

Настройки экспорта в H265: VBR 1 pass 7-10 Mbps. Quality: Higher. Время экспорта 82% - 15:38

По большому счету разница составила полтора раза. Если в настройках H265 выставить качество Highest, то время экспорта возрастает приблизительно до получаса. Т.е. в максимальном качестве H265 рендерит примерно в 3 раза дольше, чем H264. Мы говорим о разрешении FullHD.

Примечательно, что новый HEVC, по всей видимости не поддерживает видеокарту GeForce 960GTX. Ходят слухи, что, якобы, нужна видеокарта 970 или 980. На сайте Adobe такой информации нет. В любом случае, загрузка процессора при экспорте достигает 100%:

Для сравнения, при рендере в H264 силами видеокарты, нагрузка на процессор составляет около 40-50%:

Следует понимать еще одну вещь: ели бы у меня была более быстрая видеокарта, а процессор был медленнее (например 4-х ядерный i7), то разница во времени могла быть, к примеру, не 3-х кратная, а 5-кратная, т.к. H264 на видеокарте рендерился бы еще быстрее, а H265 на процессоре - медленнее.

Также немного удивил YouTube. После загрузки видеоролика в H265 появилась надпись:

Возможно, для YouTube требуется кодировать H265 в каком-то определенном профиле, разбираться особо не хотелось, поэтому залил версию H264. Кстати, YouTube анонсировал поддержку видео в разрешении 8K, так что проблемы с HEVC на YouTube в скором времени должны исзчезнуть.

В ближайшее время планирую посмотреть разницу при экспорте видео в 4K. Возможно, отсутствие аппаратной поддержки GPU существенно увеличит разницу при кодировании в этих двух форматах.

Теперь кодируем по-новому! Первые версии HEVC, Н.265 (High Efficiency Video Coding), новейшего стандарта видеокомпрессии, появились еще в 2013-м году. Среди специалистов было много споров, приживется данный формат в сфере видеонаблюдения или нет: в частности, говорилось о недоказанной эффективности (тесты в лабораторных условиях не в счет), высоких затратах на новое оборудование (кодек требует более мощной производительности устройств) и прочих важных моментах.

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

Алгоритмы работы Н.264, кодека предыдущего поколения, который вышел в далеком 2003-м, всем более или менее известны. О некоторых принципах видеосжатия при помощи кодека Н.264 можно прочитать

Теперь кодируем по-новому!

Н.265 – новейшая революционная разработка в области форматов видеокомпрессии. Специалисты полагают, этот кодек способен ощутимо пошатнуть status quo и в области обращения потребительского медиаконтента, и в профессиональной сфере (например, в системах видеонаблюдения).

Стандарт Н.265 использует в своей работе более сильные и совершенные алгоритмы сжатия видео. При одинаковом визуальном качестве новый кодек Н.265 предполагает примерно двукратное уменьшение размера файла по сравнению с «ужатым» его предшественником Н.264. Это позволяет серьезно сэкономить на дисковом пространстве регистраторов и видеосерверов. А вдвое меньший битрейт прилично уменьшит трафик в сетях передачи видеоданных.

Благодаря более мощным механизмам компрессии, кодек Н.265 отлично справляется с кодированием видео высокого и высочайшего разрешения более 8K UHD (8192×4320). Причем для качественного воспроизведения видеоинформации разрешением 4К кодеру необходим поток со скоростью всего 50 МВ/с.

Однако вернемся в привычные реалии, где множество камер имеют все же стандартное, а не запредельное разрешение: 1,3 Мп, 2 Мп, 3-Мп и выше. Испытания кодера показали эффективную его работу с разрешением видео выше 1 Мп. Тогда разница между сжатым файлом и оригиналом действительно видна. С видеопотоком, имеющем разрешение менее 1 Мп, по-прежнему мастерски справляется кодек Н.264.

И, что немаловажно, Н.265 сжимает видео практически без потерь, качество «ужатого» видео остается на высоком уровне. Специальные алгоритмы компрессии устраняют присущие Н.264 артефакты, такие как зернистость или размытые края движущихся объектов. С применением нового кодека такие моменты устранены.

Конкретные цифры: испытание последних версий кодека Н.265 дало ошеломительные результаты. Объем видео, обработанного по новому стандарту, оказался почти на 85% меньше, чем при использовании Н.264!

Дано: 2 Мп камера с фреймрейтом 25 к/с и сцена съемки со средней интенсивностью движения. При использовании кодека Н.264 битрейт будет равен примерно 4 Мб/с. В то время как при компрессии кодеком Н.265 – всего около 1 Мб/с!

Разумеется, более мощные алгоритмы видеокомпрессии предполагают использование большего числа «лошадиных сил», т.е более высокопроизводительного оборудования. И в этом еще одно отличие новейшего кодека сжатия от его предшественника Н.264, который используется повсеместно и встречается даже в самых слабеньких смартфонах. Но прогресс не стоит на месте, и уже сейчас для пользования новыми алгоритмами видеосжатия не нужно покупать сверхмощный процессор, рассчитанный для решения задач НАСА. Вполне достаточно тех многоядерных устройств, что предлагаются производителем сейчас.

Итого:
- Н.265, по сравнению с Н.264, рассчитан на обработку видео с разрешением от 4К и выше (6, 8, 12 Мп).
- Н.265 сжимает видео в разы сильнее, что позволяет экономить дисковое пространство и уменьшить нагрузку на каналы передачи данных вполовину.
- Н.265 производит видеокомпрессию практически без потерь, оставляя качество на более высоком уровне, без пиксельности и размытия объектов в движении
- Н.265 использует более мощные алгоритмы компрессии и позволяет получать объем видео до 85% меньше, чем закодированный при помощи Н.264.
- для эффективной работы, кодеку Н.265 требуется более мощные по производительности элементы и процессоры в оборудовании.

Даже такое поверхностное сравнение форматов сжатия Н.264 и Н.265 показывает ряд преимуществ нового кодека Н.265. Стандарт будет востребован в разных областях бизнеса: интернет-компании и видеохостинги, IP и цифровое ТВ, системы конференц-связи и т.д. Для систем видеонаблюдения новый формат сжатия также принесет неизмеримую пользу. За новым, Н.265-м кодеком – будущее!

В данный момент идет активная разработка энкодера, но он все ещё находится в состоянии «бета»-версии. Работает медленно и не очень эффективно. Релизы новых версий выходят очень часто.

Что требуется?

Выберите один из методов:

  1. Скачайте исходники из официального репозитория и скомпилируйте энкодер x265.exe под свою систему.
  2. Скачайте одну из последних сборок x265.exe с нашего сайта.
  3. Используйте программу кодирования с графической оболочкой (см. конец страницы).

Использование энкодера x265 из командной строки

Энкодер берет на вход файлы в формате YUV или Y4M. Размер картинки (ширина и высота), а также частота кадров (FPS) должны быть заданы. Кодирование запускается с командной строки, по аналогии с x264. Кодировать можно с постоянным битрейтом (флаг —bitrate) или с постоянным качеством (флаг —crf). Пример для постоянного битрейта:

x265.exe input.yuv --input-res 1920x1080 --fps 50 --bitrate 14000 --input-depth 8 -o output.x265

Пример для постоянного качества:

x265.exe input.yuv --input-res 1920x1080 --fps 50 --crf 17 --input-depth 8 -o output.x265

На выходе будет файл в сыром формате x265: output.x265 Разработчики подготовили набор параметров для соотношений время/качество кодирования. Эти параметры задаются с помощью флага —preset. Полный список (от самого быстрого до самого медленного): ultrafast , faster , fast , medium , slow , veryslow , placebo . По умолчанию используется пресет ‘medium’. Пример для установки пресета:

x265.exe input.yuv --input-res 1920x1080 --fps 50 --crf 17 --input-depth 8 --preset veryslow -o output.x265

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

x265.exe input.y4m --q 17 --merange 64 --frames all --ref 4 --max-merge 3 --rect --hash 2 --me 3 --b 6 --b-adapt 1 --rd 2 --rc-lookahead 60 --input-depth 16 --tu-inter-depth=3 --tu-intra-depth=3 --no-tskip --no-tskip-fast --wpp --subme 2 --s 32 --F 6 --o video.hevc



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows