H 264 кодек где h

Обновлено: 04.07.2024

H.264, MPEG-4 Part 10 или AVC (Advanced Video Coding) — лицензируемый стандарт сжатия видео, предназначенный для достижения высокой степени сжатия видеопотока при сохранении высокого качества.

Содержание

О стандарте [ ]

Он был создан ITU-T Video Coding Experts Group (VCEG) совместно с ISO / IEC Moving Picture Experts Group (MPEG) в рамках совместной программы Joint Video Team (JVT).

Стандарты ITU-T H.264 и ISO/IEC MPEG-4 Part 10 (формальное название — ISO/IEC 14496-10) технически полностью идентичны. Финальный черновой вариант первой версии стандарта был закончен в мае 2003 года.

Используется в цифровом телевидении высокого разрешения (HDTV) и во многих других областях цифрового видео.

Возможности [ ]

Стандарт H.264 / AVC / MPEG-4 Part 10 содержит ряд новых возможностей, позволяющих значительно повысить эффективность сжатия видео по сравнению с предыдущими (такими, как ASP) стандартами, обеспечивая также большую гибкость применения в разнообразных сетевых средах. Основные из них:

  • Многокадровое предсказание:
    • Использование сжатых ранее кадров в качестве опорных (то есть с заимствованием части материала из них) куда более гибко, чем в предыдущих стандартах. Позволяется использование до 32 ссылок на другие кадры, тогда как в ASP и более ранних число ссылок ограничено одним или, в случае B-кадров, двумя кадрами. Это поднимает эффективность кодирования, так как позволяет кодеру выбирать для компенсации движения между большим количеством изображений. В большинстве сцен данная функция обеспечивает не очень большое улучшение в качестве и не даёт заметного понижения битрейта. Однако, для некоторых сцен, например, с частыми повторяющимися участками, возвратно-поступательным движением и т. п. данный подход при сохранении качества позволяет очень сильно снизить затраты битрейта.
    • Независимость порядка воспроизведения изображений и порядка опорных изображений. В предшествующих стандартах устанавливалась жёсткая зависимость между порядком следования изображений для использования при компенсации движения и порядком следования изображений при воспроизведении. В новом стандарте эти ограничения в значительной мере устранены, что позволяет кодеру выбирать порядок изображений для компенсации движения и для воспроизведения с высокой степенью гибкости, которая ограничена только объёмом памяти, который гарантирует возможность декодирования. Устранение ограничения также позволяет в ряде случаев устранить дополнительную задержку, ранее связанную с двунаправленным предсказанием.
    • Независимость методов обработки изображений и возможности их использования для предсказания движения. В предшествующих стандартах изображения, закодированные с использованием некоторых методов (например, двунаправленного предсказания), не могли использоваться в качестве опорных для предсказания движения других изображений видеопоследовательности. Устраняя это ограничение, новый стандарт обеспечивает кодеру большую гибкость и, во многих случаях, возможность использовать для предсказания движения изображение, более близкое по содержанию к кодируемому.
    • Компенсация движения с переменным размером блока (от 16x16 до 4x4 пикселя) позволяет крайне точно выделять области движения.
    • Векторы движения, выводящие за границы изображения. В MPEG-2 и предшествовавших ему стандартах векторы движения могли указывать только на пикселы, находящиеся в границах декодированного опорного изображения. Методика экстраполяции за границы изображения, появившаяся как опция в H.263, включена в новый стандарт.
    • Шеститочечная фильтрация компонента яркости для полупиксельного предсказания с целью уменьшения зубчатости краев и, в конечном счёте, обеспечения большей чёткости изображения.
    • Точность до четверти пиксела (Qpel) при компенсации движения обеспечивает очень высокую точность описания движущихся областей (что особенно актуально для медленного движения). Цветность, как правило, хранится с разрешением, уменьшенным вдвое по вертикали и горизонтали (прореживание цвета), поэтому компенсация движения для компонента цветности использует точность в одну восьмую пиксела цветности.
    • Взвешенное предсказание, позволяющее использовать масштабирование и сдвиг после компенсации движения на величины, указанные кодером. Такая методика может чрезвычайно сильно поднять эффективность кодирования для сцен с изменением освещённости, например при эффектах затемнения, постепенного появления изображения.
    • Метод представления макроблоков без потерь в PCM, при котором видеоданные представлены непосредственно, позволяющий точно описывать определённые области и допускающий строгое ограничение на количество закодированных данных для каждого макроблока.
    • Улучшенный метод представления макроблоков без потерь, позволяющий точно описывать определённые области, при этом обычно затрачивая существенно меньше битов, чем PCM (поддерживается не во всех профилях).
    • Адаптивное к изображению кодирование полей (PAFF), позволяющее кодировать каждый кадр как кадр или как пару полей (полукадров) — в зависимости от отсутствия\наличия движения.
    • Адаптивное к макроблокам кодирование полей (MBAFF), позволяющее независимо кодировать каждую вертикальную пару макроблоков (блок 16×32) как прогрессивные или чересстрочные. Позволяет использовать макроблоки 16×16 в режиме разбиения на поля (сравните с 16×8 полумакроблоками в MPEG-2). Почти всегда эффективнее PAFF.
    • Точное целочисленное преобразование пространственных блоков 4×4 (концептуально подобное широко известному DCT, но упрощенное и способное обеспечить точное декодирование[1]), позволяющее точное размещение разностных сигналов с минимумом шума, часто возникающего в предыдущих кодеках.
    • Точное целочисленное преобразование пространственных блоков 8x8 (концептуально подобное широко известному DCT, но упрощенное и способное обеспечить точное декодирование; поддерживается не во всех профилях), обеспечивающее большую эффективность сжатия схожих областей, чем 4×4.
    • Адаптивный выбор кодеком между размерами блока 4×4 и 8×8 (поддерживается не во всех профилях).
    • Дополнительное преобразование Адамара, применяемое к дискретно-косинусным коэффициентам основного пространственного преобразования (к коэффициентов яркости, и, в особом случае, цветности) для достижения большей степени сжатия в однородных областях.
    • Логарифмическое управление длиной шага для упрощения распределения битрейта кодером и упрощенного вычисления обратной длины квантования.
    • Частотно-оптимизированные матрицы масштабирования квантования, выбираемые кодером для оптимизации квантования на основе человеческих особенностей восприятия (поддерживается не во всех профилях).
    • Context-adaptive binary arithmetic coding (CABAC, контекстнозависимое адаптивное бинарное арифметическое кодирование) — алгоритм сжатия без потерь для синтаксических элементов видеопотока на основе вероятности их появления. Поддерживается только в Main Profile и выше. Обеспечивает более эффективное сжатие, чем CAVLC, но требует значительно больше времени на декодирование.
    • Context-adaptive variable-length coding (CAVLC, контекстнозависимое адаптивное кодирование с переменной длиной кодового слова) — альтернатива CABAC меньшей сложности. Тем не менее, оно сложнее и эффективнее, чем алгоритмы, применяемые для тех же целей в более ранних технологиях сжатия видео (как правило это алгоритм Хаффмана).
    • Часто используемое, простое и высоко структурированное кодирование словами переменной длины многих элементов синтаксиса, не закодированных CABAC или CAVLC, известное как коды Голомба (экспоненциальное кодирование Голомба).
    • Определение уровня сетевой абстракции (NAL), позволяющее использовать один и тот же синтаксис видео в различных сетевых окружениях, включая наборы параметров последовательности (sequence parameter sets, SPSs) и наборы параметров изображения (picture parameter sets, PPSs), которые обеспечивают большую надёжность и гибкость, чем предыдущие технологии.
    • Гибкое упорядочивание макроблоков (FMO), также известное как группы частей (поддерживается не во всех профилях) и произвольное упорядочивание частей (ASO) — методы реструктурирования порядка представления фундаментальных областей (макроблоков) в изображениях. При эффективном использовании гибкое упорядочивание макроблоков может существенно повысить устойчивость к потере данных.

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

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

    Профили [ ]

    Стандарт определяет комплекты возможностей, которые называются профили, ориентированные на конкретные классы приложений.

    • Baseline Profile (Базовый профиль)
      • Применяется в недорогих продуктах, требующих дополнительной устойчивости к потерям. Используется для видеоконференций и в мобильных продуктах. Включает все возможности Constrained Baseline Profile и, дополнительно, возможности для большей устойчивости к потерям при передаче. С появлением Constrained Baseline Profile отошел на второй план, т.к. все потоки Constrained Baseline Profile соответствуют Baseline Profile, и оба этих профиля имеют общий код идентификатора.
      • Рассчитан на применение в недорогих продуктах. Включает набор возможностей, общих для профилей Baseline, Main, и High профилей.
      • Применяется для цифрового телевидения стандартной четкости в трансляциях, использующих сжатие MPEG-4 в соответствии со стандартом DVB.
      • Предназначен для потокового видео, имеет относительно высокую степень сжатия и дополнительные возможности для повышения устойчивости к потере данных.
      • Является основным для цифрового вещания и видео на оптических носителях, особенно для телевидения высокой четкости. Используется для Blu-Ray видеодисков и DVB HDTV вещания.
      • Дополнительно поддерживает 10-битовую глубину кодирования изображения.
      • В основном нацелен на профессиональное использование при работе с чересстрочным видеопотоком. Поддерживает дополнительный вариант кодирования цветности.
      • Базируясь на Hi422P, включает еще один вариант кодирования цветности и работу с 14-битной глубиной кодирования.

      Для профессионального применения стандарт содержит четыре дополнительных all-Intra («всё внутри») профиля, которые характеризуются отсутствием межкадрового сжатия. То есть, при кодировании одного кадра информация о соседних не используется:

      • High 10 Intra Profile
      • High 4:2:2 Intra Profile
      • High 4:4:4 Intra Profile
      • CAVLC 4:4:4 Intra Profile

      С принятием расширения Scalable Video Coding (SVC) к стандарту были добавлены три профиля, соответствующие базовым, с добавлением возможности включать потоки более низкого разрешения.

      • Scalable Baseline Profile
      • Scalable High Profile
      • Scalable High Intra Profile

      Добавление расширения Multiview Video Coding (MVC) принесло еще два дополнительных профиля:

      Уровни [ ]

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

      Патенты [ ]

      В странах, где действуют патенты на программное обеспечение, разработчики программного обеспечения, использующего алгоритмы H.264/AVC, обязаны платить лицензионные отчисления держателям патентов. Держателями таковых, в частности, являются Microsoft, Fujitsu, Philips, Apple, Samsung, Cisco, Toshiba, Panasonic. Также существует организация MPEG LA, которая является администратором консолидированного пула патентов. Всего существует более сотни патентов, так или иначе затрагивающих или описывающих алгоритмы H.264. Сроки действия части из них уже истекли, однако некоторые будут продолжать действовать в США вплоть до 2028 года.

      В марте 2011 г. Министерство юстиции США начало расследование против MPEG LA по подозрению в использовании патентного права с целью устранения конкурента - WebM от Google. Поводом к началу расследования стали обвинения в нарушении патентов третьих разработчиков.

      Недостатки [ ]

      Кодеки для MPEG-4 AVC более требовательны к ресурсам, нежели кодеки на основе MPEG-4 ASP (такие, как DivX и XviD), однако это компенсируется другими достоинствами.

      Формат запатентован, и создатели кодеков обязаны платить за их распространение путём покупки лицензий. С 2011 года MPEG LA могла бы начать взимать плату и с тех, кто участвует в кодировании и/или бесплатном предоставлении пользователям видеопотока в AVC. Однако позже этот срок был изменён на 2015 год, а 26 августа 2010 года компания MPEG LA объявила, что за бесплатное предоставление пользователям видеопотока в H.264 плата взиматься не будет.


      H.264 — стандарт сжатия видео. И он вездесущ, его используют для сжатия видео в интернете, на Blu-ray, телефонах, камерах наблюдения, дронах, везде. Все сейчас используют H.264.

      Нельзя не отметить технологичность H.264. Он появился в результате 30-ти с лишним лет работы с одной единственной целью: уменьшение необходимой пропускной способности канала для передачи качественного видео.

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

      Видео в несжатом виде это последовательность двумерных массивов, содержащих информацию о пикселях каждого кадра. Таким образом это трёхмерный (2 пространственных измерения и 1 временной) массив байтов. Каждый пиксель кодируется тремя байтами — один для каждого из трёх основных цветов (красный, зелёный и синий).

      1080p @ 60 Hz = 1920x1080x60x3 =>

      370 Мб/с данных.

      Этим практически невозможно было бы пользоваться. Blu-ray диск на 50Гб мог бы вмещать всего около 2 мин. видео. С копированием так же будет не легко. Даже у SSD возникнут проблемы с записью из памяти на диск.

      Поэтому да, сжатие необходимо.

      Обязательно отвечу на этот вопрос. Но сперва я покажу кое-что. Взгляните на главную страницу Apple:


      Я сохранил изображение и приведу в пример 2 файла:

      Нет, с размерами всё в порядке. Видео H.264 с 300 кадрами весит 175 Кб. Один единственный кадр из видео в PNG — 1015 Кб.

      Кажется, мы храним в 300 раз больше данных в видео, но получаем файл весом в 5 раз меньше. Получается H.264 эффективнее PNG в 1500 раз.

      А приёмов очень много! H.264 использует все приёмы о которых вы догадываетесь (и уйму о которых нет). Давайте пройдёмся по основным.

      Представьте, что вы готовите машину к гонкам и вам нужно её ускорить. Что вы сделаете в первую очередь? Вы избавитесь от лишнего веса. Допустим, машина весит одну тонну. Вы начинаете выбрасывать ненужные детали… Заднее кресло? Пфф… выбрасываем. Сабвуфер? Обойдёмся и без музыки. Кондиционер? Не нужен. Коробка передач? В мусо… стойте, она еще пригодится.

      Таким образом вы избавитесь от всего, кроме необходимого.

      Этот метод отбрасывания ненужных участков называется сжатием данных с потерями. H.264 кодирует с потерями, отбрасывая менее значимые части и сохраняя при этом важные.

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

      Важные части? Как алгоритм может определять их важность в кадре?

      Существует несколько очевидных способов урезания изображения. Возможно, верхняя правая четверть картинки бесполезна, тогда можно удалить этот угол и мы уместимся в ¾ исходного веса. Теперь машина весит 750 кг. Либо можно вырезать кромку определенной ширины по всему периметру, важная информацию всегда ведь по середине. Да, возможно, но H.264 всего этого не делает.

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


      Видите как на сжатом изображении исчезли отверстия в решётке динамика у MacBook Pro? Если не приближать, то можно и не заметить. Изображение справа весит всего 7% от исходного и это при том, что сжатия в традиционном смысле не было. Представьте машину весом всего лишь 70 кг!

      Для начала немного математики.

      Мы подходим к самому интересному! Если вы посещали теорию информатики, то возможно вспомните про понятие информационной энтропии. Информационная энтропия это количество единиц для представления некоторых данных. Заметьте, что это вовсе не размер самих данных. Это минимальное количество единиц, которое нужно использовать, чтобы представить все элементы данных.

      Например, если в виде данных взять один бросок монеты, то энтропия получится 1 единица. Если же бросков монетки 2, то понадобятся 2 единицы.

      Предположим, что монета весьма странная — её подбросили 10 раз и каждый раз выпадал орёл. Как бы вы кому нибудь рассказали об этом? Вряд ли как-то вроде ОООООООООО, вы бы сказали «10 бросков, все орлы» — бум! Вы только что сжали информацию! Легко. Я вас спас от многочасовой утомительной лекции. Это, конечно же, огромное упрощение, но вы преобразовали данные в некое короткое представление с той же информативностью. То есть уменьшили избыточность. Информационная энтропия данных не пострадала — вы только преобразовали представление. Такой способ называется энтропийным кодированием, который подходит для кодирования любого вида данных.

      Теперь, когда мы разобрались с информационной энтропией, перейдем к преобразованию самих данных. Можно представить данные в фундаментальных системах. Например, если использовать двоичный код, будут 0 и 1. Если же использовать шестнадцатеричную систему, то алфавит будет состоять из 16 символов. Между вышеупомянутыми системами существует взаимно однозначная связь, поэтому можно легко преобразовывать одно в другое. Пока всё понятно? Идём дальше.

      А представьте, что можно представить данные, которые изменяются в пространстве или времени, в совершенно иной системе координат. Например, яркость изображения, а вместо системы координат с x и y, возьмём частотную систему. Таким образом, на осях будут частоты freqX и freqY, такое представление называется частотным пространством[Frequency domain representation]. И существует теорема, что любые данные можно без потерь представить в такой системе при достаточно высоких freqX и freqY.

      freqX и freqY всего лишь другой базис в системе координат. Так же как можно перейти из двоичной системы в шестнадцатеричную, можно перейти из X-Y в freqX и freqY. Ниже изображён переход из одной системы в другую.


      Мелкая решётка MacBook Pro содержит высокочастотную информацию и находится в области с высокими частотами. Таким образом мелкие детали имеют высокую частоту, а плавные изменения, такие как цвет и яркость низкую. Всё, что между, остаётся между.

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

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

      Ниже знакомый нам ноутбук, но теперь уже с, применёнными к ней, круговыми масками.


      В процентах указана информационная энтропия относительно исходного изображения. Если не приближать, то разница не заметна и при 2%! — машина теперь весит 20 кг!

      Именно таким образом нужно избавляться от веса. Такой процесс сжатия с потерями называется Квантованием.

      Человеческий глаз не особо хорошо различает близкие оттенки цвета. Можно легко распознавать наименьшие различия в яркости, но не цвета. Поэтому должен существовать способ избавления от лишней информации о цвете и сэкономить ещё больше места.

      В телевизорах, цвета RGB преобразуются в YCbCr, где Y это компонента яркости (по сути яркость черно-белого изображения), а Cb и Cr компоненты цвета. RGB и YCbCr эквиваленты в плане информационной энтропии.

      Во времена чёрно-белых телевизоров, была только компонента Y. А с началом появления цветных телевизоров у инженеров встала задача о передаче цветного RGB изображения вместе с чёрно-белым. Поэтому вместо двух каналов для передачи, было решено кодировать цвет в компоненты Cb и Cr и передавать их вместе с Y, а цветные телевизоры уже сами будут преобразовывать компоненты цвета и яркости в привычный им RGB.

      Но вот в чём хитрость: компонента яркости кодируется в полном разрешении, а компоненты цвета лишь в четверть. И этим можно пренебречь, т.к. глаз/мозг плохо различает оттенки. Таким образом можно уменьшить размер изображения в половину и с минимальными отличиями. В 2 раза! Машина будет весить 10 кг!

      Данная технология кодирования изображения со снижением цветового разрешения называется цветовой субдискретизацией. Она используется повсеместно уже давно и относится не только к H.264.

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

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

      H.264 стандарт, который позволяет компенсировать движения.

      Представьте, что вы смотрите теннисный матч. Камера зафиксирована и снимает с определенного угла и единственное что движется это мячик. Как бы вы закодировали это? Вы бы сделали что и обычно, да? Трёхмерный массив пикселей, две координаты в пространстве и один кадр за раз, так?

      Но зачем? Большая часть изображения одинакова. Поле, сетка, зрители не меняются, единственное что движется это мячик. Что если определить единственное изображение фона и одно изображение мячика, движущегося по нему. Не сэкономило бы это значительно места? Вы видите к чему я клоню, не так ли? Компенсация движения?

      И это именно то, что H.264 делает. H.264 разбивает изображение на макроблоки, обычно 16х16, которые используются для расчёта движения. Один кадр остаётся статичным, обычно его называют I-кадр [Intra frame], и содержит всё. Последующие кадры могут быть либо P-кадры [predicted], либо B-кадры [bi-directionally predicted]. В P-кадрах вектор движения кодируется для каждого макроблока на основе предыдущих кадров, таким образом декодер должен использовать предыдущие кадры, взяв последний из I-кадров видео и постепенно добавляя изменения последующих кадров пока не дойдёт до текущего.

      Ещё интереснее обстоят дела с B-кадрами, в которых расчёт производится в обоих направлениях, на основании кадров идущих до и после них. Теперь вы понимаете почему видео в начале статьи весит так мало, это всего лишь 3 I-кадра, в которых мечутся макроблоки.

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

      Мы рассмотрели статическое и временное сжатия. С помощью квантования мы во много раз уменьшили размер данных, затем с помощью цветовой субдискретизации ещё вдвое сократили полученное, а теперь еще компенсацией движения добились хранения лишь 3х кадров из 300, которые были первоначально в рассматриваемом видео.

      Теперь мы подведём черту, используя традиционное энтропийное кодирование без потерь. Почему нет?

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

      От такой избыточности можно избавиться энтропийным кодированием. И можно не переживать за сами данные, так как это стандартная технология сжатия без потерь, а значит всё можно восстановить.

      Вот теперь всё! В основе H.264 лежат вышеупомянутые технологии. В этом и заключаются приёмы стандарта.

      Отлично! Но меня разбирает любопытство узнать, сколько же весит теперь наша машина.

      Исходное видео было снято в нестандартном разрешении 1232x1154. Если посчитать, то получится:

      5 сек. @ 60 fps = 1232x1154x60x3x5 => 1.2 Гб
      Сжатое видео => 175 Кб

      Если соотнести результат с оговорённой массой машины в одну тонну, то получится вес равный 0.14 кг. 140 граммов!

      Да, это магия!

      Конечно же я в очень упрощённом виде изложил результат десятилетних исследований в этой сфере. Если захотите узнать больше, то страница в википедии вполне познавательна.

      Что такое H.264, H.264+, H.265, H.265+ ?

      Кодеки H.264, H.264+, H.265, H.265+ представляют собой программное обеспечение, необходимое для компрессии видео. В процессе обработки весь отснятый материал обрабатывается и сжимается, снижая нагрузку на потоки. Это особенно важно при сохранении информации в архивы или при передаче для просмотра в режиме онлайн. Рассмотрим, что собой представляют стандарты H.264, H.264+, H.265, H.265+ и в чем их отличие.

      H.264 и H.264+: эффективные, но устаревшие стандарты кодирования

      H.264 – это стандарт, появившийся еще в 2013 году и способны обеспечить запись в формате HD, а скорость обработки – 7-8 мегабайт за секунду. Ему на смену пришел стандарт Н.264+, который проводит запись в аналогичном формате, при этом скорость потока существенно выше- от 12 до 20 мегабайт за секунду.

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

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

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

      Это вывело видеонаблюдение совершенно на новый уровень. Но часто можно встретить еще такие стандарты, как H.264h или H.264b. Их отличие незначительное, но для общего понимания нужно помнить, что “h” – высший стандарт, имеющий больше функций, а “b” – устаревший базовый стандарт, подходящий для старых систем с меньшим количеством процессоров. На этом и все отличие между H.264 vs H.264h vs H.264b.

      H.265 и H.265+: усовершенствованные стандарты кодирования

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

      Для достижения идеальных результатов, разработчики предложили обновленный кодек H.265+. В нем применялся доработанный алгоритм инженеров компании Hikvision, вместе с чем была увеличена производительность на 67%. Ультрасовременный кодек, который косвенно способствовал открытию формата 4К в системах наблюдения. Ведь теперь файлы в 4К по весу занимали не более, чем HD. Стандарт H.265+ обладает следующими преимуществами:

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

      Пока именно стандарт H.265+ является наиболее эффективным решением, а также раскрыл новые возможности для разработчиков цифровых технологий.

      Стандарт кодирования H.265+: ключевые возможности

      Интеллектуальная система кодирования

      Когда в обработку попадает видео, то кодек автоматически разделяет фон и посетителей. Программное обеспечение создает модель с применение одного или нескольких кадров. Это дает возможность проводить прогнозирование в моментах, где есть предсказуемая информация из ранее переданных блоков или аналогичного кадра. Подобным образом, процесс сжатия осуществляется за счет проведения трансляции только динамической части кадра. Необходимо учитывать, что большинство объектов в система обладает статичным фоном, поэтому H.265+ значительно эффективней своего предшественника.

      Подавление цифрового шума

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

      Битрейт под контролем

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

      Сравнение в цифрах

      К примеру, если брать за основу камеру видеонаблюдения с форматом съемки Full HD и скоростью записи 25 кадров за секунду, то в случае использования H.264 и H.265+ разница будет составлять 83%, а между H.265 и H.265+ разница будет достигать 67%. За сутки это 22,7 гигабайтов для H.264, 11,8 гигабайтов для H.265 и 3,9 гигабайтов для H.265+.

      Заключение

      Кодеки компрессии H.264, H.264+, H.265, H.265+ просто неразлучно связаны с цифровым видеонаблюдением. Каждая из технологий работает эффективно, но некоторые из них уже морально устарели. При этом нужно учитывать, что устаревшие камеры наблюдения неспособны работать под H.265 или H.265+, т.к. они внедрены в более современных моделях. Если у вас остались дополнительные вопросы, задавайте в комментариях или свяжитесь с представителями нашей компании.

      Основная задача настоящего тестирования - сравнить результаты работы нового поколения MPEG4-кодеков (называемых MPEG-4 AVC или H.264) при записи домашнего видео простыми пользователями. Такие пользователи, как правило, используют простые известные программы для того, чтобы считывать DVD или оцифровывать сигнал с тюнера и редко изменяют настройки кодеков. Мы прекрасно понимаем, что писать кодеки так, чтобы они хорошо работали в разных ситуациях без специальной настройки (автоматически подстраиваясь под тип видео) сложнее, но тем больше чести авторам, если их кодеки хорошо справляются с такой задачей. DivX Pro 5 использовался для сравнения, как один из лучших кодеков предыдущего поколения, стандарта MPEG-4 ASP. Подробнее о разновидностях MPEG-4 можно прочитать здесь.

      Использованные кодеки

      Main Concept H.264

      Ateme MPEG-4 AVC / H.264

      Videosoft H.264 codec main

      Учитывая специфику H.264 (очень большое время работы при включении "по максимуму" всех опций и возможностей), мы в дальнейшем введем два набора настроек, получаемых от производителей кодеков (и только от них). Первый набор - "tuned" - настройки, дающие максимальное качество, но долгую работу и "fast" - настройки, обеспечивающие быструю работу, но с меньшим качеством. Причем и время, и качество будут измеряться в обоих случаях. Это позволит кодекам продемонстрировать, на что они способны по качеству и даст возможность более корректно сравнивать скорость, чем в варианте сравнения настроек по умолчанию. Часть 1: Методика тестирования

      Метрика PSNR

      Описание метрики

      В рамках данного тестирования критерием качества сжатия служит метрика PSNR (peak signal to noise ratio/пиковое отношение сигнала к шуму, измеряется в дБ). Использование именно этой метрики обусловлено ее популярностью. Ее используют в большинстве научных статей и сравнений в качестве меры потерь качества. Как и все существующие метрики, она не идеальна и имеет свои достоинства и недостатки. Для понимания приведенных ниже цифр, необходимо знать лишь то, что значение метрики тем больше, чем больше разница между сравниваемыми изображениями.

      Примечание: PSNR – это наиболее общепринятая метрика для оценки различий между двумя последовательностями. Несомненно, у неё есть множество недостатков. Можно придумать огромное количество последовательностей, на которых эта метрика не совсем адекватно себя ведёт. Например, два кадра, яркость одного из которых подняли на одну единицу (из, скажем, 255). Или два кадра, отличающихся одним пикселем – на первом пиксель белый, а на втором – чёрный. В обоих примерах вы с трудом сможете уловить различия в кадрах на глаз, но с точки зрения PSNR кадры будут значительно отличаться! Однако, несмотря на все недостатки, именно метрикой PSNR до сих пор пользуется большинство разработчиков кодеков для анализа своих результатов. Эта метрика понимается и признаётся всеми профессионалами в области кодирования видео. Именно по этой причине мы выбрали PSNR в качестве основной метрики.

      Смысл графиков PSNR/Frame size


      На графике изображена зависимость показателя метрики от среднего размера кадра. Каждая ветвь соответствует определенному кодеку. Ветви построены на опорных точках, каждая из которых соответствует конкретному битрейту. Хорошо видно, что на каждой ветви находится по десять точек (каждая последовательность сжимается на 10 настройках битрейта). Бывает, что кодек не удерживает битрейт и с разными настройками битрейта сжимает одинаково. В таких случаях, очевидно, на ветви кодека расположено менее десяти опорных точек. Для сравнения кодеков на этих графиках следует обращать внимание на то, как высоко расположены ветви кодеков. Чем выше находится ветвь – тем выше в среднем качество последовательности, сжатой данным кодеком. На вышеприведенном в качестве примера рисунке видно, что на высоком битрейте Videosoft сжал последовательность с меньшими потерями качества по сравнению с другими кодеками.

      Методика тестирования

      Последовательность действий

      В тестировании участвует девять фильмов (см. ниже). Каждый фильм сжимается десять раз с разными битрейтами (кбит/с): 100, 225, 340, 460, 700, 938, 1140, 1340, 1840, 2340. Таким образом, для каждого кодека генерируется 50 фильмов. Затем для каждого фильма вычисляется метрика PSNR. Причем указанная метрика вычисляется для каждого кадра. Далее для построения графика используются соответствующие числа, в зависимости от типа графика.

      Задачи и правила тестирования

      Самый распространённый вопрос по поводу этого тестирования – «А с какими настройками тестировались кодеки?». В полном тексте документа, в разных местах мы ответили на него 8 раз – с настройками по умолчанию! Это означает следующее. Мы брали чистую операционную систему и инсталлировали на неё кодек. Настройки, которые он выставил при этом, мы считали настройками по умолчанию. В процессе тестирования мы меняли только один параметр – битрейт. Таким образом, чтобы посмотреть все параметры, вам надо всего лишь заново проинсталлировать интересующий вас кодек.

      Последовательности

      На разных последовательностях кодеки показывают разные результаты. Например, эффективно сжать последовательность из одинаковых кадров намного легче, чем последовательность, состоящую из существенно различающихся картинок. Есть и другие характеристики последовательностей – размер кадров, зашумлённость, длина последовательности, тип движения камеры и т.д. Для нашего тестирования мы выбрали стандартные последовательности. Многими из них пользуются производители кодеков для тестирования своих продуктов. Конечно, эти последовательности не покрывают всего множества фильмов – тут нет ни мультфильмов, ни видео с тюнера. В дальнейшем мы планируем расширить число последовательностей.Часть 2: Графики по PSNR для всех кодеков

      Графики Y-PSNR - Frame Size

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

      Delta Y-PSNR – это графики относительного PSNR. В качестве референсного кодека выбран DivX 5.1.1. Для каждого замера на графике конкретного кодека бралась разница этого замера и значения PSNR для референсного кодека с тем же битрейтом. При отсутствии значения, PSNR референсного кодека получался линейной интерполяцией.



      Выводы

      • На низких битрейтах DivX сильно уступает кодекам VSS_main, Fraunhofer, Ateme.
      • На средних и высоких битрейтах кодек от Ateme опережает все остальные кодеки.

      В полной версии сравнения представлены другие типы графиков для различных последовательностей и видеокодеков: V-PSNR, U-PSNR , Y-difference и bitrate-handling.

      Часть 3: Покадровое сравнение видеокодеков

      На этих графиках хорошо видно, как изменяется качество сжатия отдельных кадров кодеками. По оси X отложены номера соответствующих кадров, а по оси Y – PSNR кодеков при сравнении с оригиналом.

      Sequence bankomatdi. Bitrate 100 kb/sec


      Sequence bankomatdi. Bitrate 2340 kb/sec


      • Битрейт 700 Кбит/с.
      • Последовательности для сравнения: bbc3di и foreman.

      Последовательность bbc3di, кадр 280


      Последовательность foreman, кадр 282


      Выводы

      • При одинаковом значении метрики PSNR кодеки стандарта H.264 показывают заметно лучшее визуальное качество.
      • Большинство кодеков явно оптимизированы для достижения максимальной скорости кодирования на сегодняшних конфигурациях и не используют всех возможностей, предоставляемых форматом H.264.

      При сравнении кодеков всегда хочется узнать, кто же в итоге лучший. Часто при ответе на подобные вопросы возникают заключения вроде «H.264 лучше DivX на 45%!». Однако кодеки можно сравнивать по многим параметрам – качеству сжатых последовательностей, способности держать заданный битрейт, быстродействию, удобству использованию, размеру инсталлятора, красоте логотипа и т.д. Причём для разных задач отдельные параметры могут быть неодинаково важны. Например, если вы хотите сжимать телевизионный сигнал, для вас важна скорость работы кодека, если записывать сжатые фильмы на CD – то немаловажна точность соблюдения битрейта, а если решили сделать архив оцифрованного видео – то, скорее всего, определяющим фактором является качество сжатых последовательностей.

      Как было сказано выше, данный текст является сильно сокращенным и откомментированным вариантом сравнения видеокодеков, предназначенного в первую очередь для профессиональных пользователей и производителей кодеков. Полный вариант этого тестирования имеет объем 70 pdf-страниц, содержит сравнения всех указанных в начале статьи видеокодеков, множество графиков и рисунков, не приведенных в данной статье.

      Мы выражаем благодарность компаниям Moonlight Cordless LTD, Fraunhofer Institute for Integrated Circuits IIS и Ateme за любезно предоставленные для данного тестирования кодеки, недоступные публично.

      Читайте также: