H 265 кодек что это
В своё время разработка кодека H264 стала настоящим прорывом, потому что получилось посадить за один стол людей, занимающихся телевидением, IP камерами, конференц-связью и родить стандарт, которого в целом хватило всем.
Напоминаю, что кодек — это не конкретный алгоритм, а описание форматов упаковки видео так, что бы упихнуться в предельно сжатое количество бит. Энкодер волен выбирать способы упаковки согласно стандарта кодека.
Так вот H264 — это сочетание хорошего кодека, хороших энкодеров и массы приличных декодеров. Но что же происходит с H265?
H265 — это стандарт, который приходит на смену H264. Его прибытие стало омрачено сомнительной авантюрой гугла с их VP6, VP9, VP10 и сказками о том, что кодеки серии VP лучше любого H264 и т.п.
Главная суть H265 в том, что он продается как решение для размеров экранов выше чем FullHD. Для чего он реально годится мы поговорим ниже, но мир устроен так, что сначала надо продать. Вот для 4K он и продается.
Я хочу немного поговорить о текущем статусе поддержки H265, потому что к нам с этим обращаются и приходится проводить ликбез каждый раз.
Проигрывание
Из десктопных браузеров показывать H265 сейчас фактически умеет только Microsoft Edge, остальные нет.
Есть проигрывание на телевизионных приставках, SmartTV и в программах/приложени, но браузеры пока очень сильно отстают.
Так же надо понимать, что на телефонах сейчас h265 скорее всего будет играться на процессоре, т.е. если хватит батарейки на просмотр рекламы, уже неплохо.
Достаточно ли этого?
Ну, технически да, но с большой оговоркой. Как и AVC (и другие стандарты сжатия), H.265 настраивается в зависимости от требуемой пропускной способности. Хотите 4K на низкоскоростном интернете? Нет проблем; увеличьте степень сжатия (помните яблочный соус?). Хотите лучшее качество изображения? Нет проблем; уменьшите степень сжатия.
Хотя эта схема обеспечивает гибкость, это также означает, что «4K» и «UHD» не обязательно гарантируют лучшее качество изображения, чем сегодня, «1080p» или «HD». Очень сжатый сигнал 4K во многих отношениях выглядел хуже, чем менее сильно сжатый сигнал HD.
Другими словами, потоковая передача 4K может выглядеть хуже, чем текущий 1080p Blu-ray, в зависимости от того, сколько используется сжатие
И хотя скорость обработки на всех устройствах соответствует закону Мура, пропускная способность интернета ограничена.
Это было предсказуемо: разбираемся, как H.264 сжимает видео
Вернемся к таблице, с которой мы начали. Как видите, помимо таких параметров, как разрешение, фреймрейт и качество картинки решающим фактором, определяющим конечный размер видео, оказывается уровень динамичности снимаемой сцены. Это объясняется особенностями работы современных видеокодеков вообще, и H.264 в частности: используемый в нем механизм предсказания кадров позволяет дополнительно сжимать видео, при этом практически не жертвуя качеством картинки. Давайте посмотрим, как это работает.
Кодек H.264 использует несколько типов кадров:
- I-кадры (от английского Intra-coded frames, их также принято называть опорными или ключевыми) — содержат информацию о статичных объектах, не меняющихся на протяжении длительного времени.
- P-кадры (Predicted frames, предсказанные кадры, также именуемые разностными) — несут в себе данные об участках сцены, претерпевших изменения по сравнению с предыдущим кадром, а также ссылки на соответствующие I-кадры.
- B-кадры (Bi-predicted frames, или двунаправленные предсказанные кадры) — в отличие от P-кадров, могут ссылаться на I-, P- и даже другие B-кадры, причем как на предыдущие, так и на последующие.
[НАЧАЛО СЪЕМКИ] I-P-P-P-P-P-P-P-P-P-P-P-P-P- .
Поскольку в процессе вычитания возможны ошибки, приводящие к появлению графических артефактов, то через какое-то количество кадров схема повторяется: вновь формируется опорный кадр, а вслед за ним — серия кадров с изменениями.
Полное изображение формируется путем «наложения» P-кадров на опорный кадр. При этом появляется возможность независимой обработки фона и движущиеся объектов, что позволяет дополнительно сэкономить дисковое пространство без риска упустить важные детали (черты лиц, автомобильные номера и т. д.). В случае же с объектами, совершающими однообразные движения (например, вращающимися колесами машин) можно многократно использовать одни и те же разностные кадры.
Независимая обработка статических и динамических объектов позволяет сэкономить дисковое пространство
Данный механизм носит название межкадрового сжатия. Предсказанные кадры формируются на основе анализа широкой выборки зафиксированных состояний сцены: алгоритм предвидит, куда будет двигаться тот или иной объект в поле зрения камеры, что позволяет существенно снизить объем записываемых данных при наблюдении за, например, проезжей частью.
Кодек формирует кадры, предсказывая, куда будет двигаться объект
В свою очередь, использование двунаправленных предсказанных кадров позволяет в несколько раз сократить время доступа к каждому кадру в потоке, поскольку для его получения будет достаточно распаковать только три кадра: B, содержащий ссылки, а также I и P, на которые он ссылается. В данном случае цепочку кадров можно изобразить следующим образом.
[НАЧАЛО СЪЕМКИ] I-B-P-B-P-B-P-B-P-B-P-B-P-B-P-B-P-…
Такой подход позволяет существенно повысить скорость быстрой перемотки с показом и упростить работу с видеоархивом.
Что такое формат H.265 (HEVC)
High Efficiency Video Coding на сегодняшний день является самым современным и продвинутым видеокодеком. Если H.264 (AVC), основанный на кодеке MPEG, был ориентирован на воспроизведение FullHD видео, то его сменщик способен сжимать видеоряд до разрешения UHDTV, или 8К.
Что интересно, к разработке более совершенного стандарта приступили в 2004 году, то есть всего через год после начала внедрения AVC. Первоначально проект назывался H.NGVC, что расшифровывается как Next-generation Video Coding, а затем за стандартом закрепилось нынешнее эволюционное название. Перед экспертной группой VCEG стояла нелёгкая задача: повысить разрешение видео, добившись снижения битрейта, при этом не увеличивая вычислительные мощности оборудования. Требования, прямо скажем, противоречивые, поэтому в полной мере их реализовать не удалось.
И всё-таки разработчикам удалось добиться главного: увеличения максимального размера блока, основной единицы кодека, в 16 раз по сравнению с H.264, у которого он равен 16х16 пикселей. При этом была задействована технология блоков динамического размера, когда кодек во время сжатия видео сам выбирает оптимальное количество пикселей в блоке. Это и позволило новому формату легко поддерживать разрешение 8К, хотя и 4К на сегодня внедряется не такими быстрыми темпами, как хотелось бы. Добавьте сюда технологию параллельного кодирования, и вы получите кодек, способный сжимать видео до размера, на 25-50% меньше, чем у предшественника, при том же качестве.
Новый стандарт был утверждён только в 2012 году и поначалу имел ограниченное применение – в телевидении и IP камерах. Но когда в 2017 году поддержку HEVC реализовали в iOS 11, ситуация начала быстро меняться.
Резюме
H265 развивается, распространяется, но на сегодняшний день скорее всего не будет ничего фатального, если вы его пока не рассматриваете.
У него уже на старте есть конкуренты, с которыми прийдется побороться, но есть и хорошая стартовая позиция в виде приличной родословной (от тех же людей, что и H264) и неплохая поддержка в транспортах и протоколах доставки видео.
Высокоэффективный видео кодек (High Efficiency Video Coding (HEVC)), видео кодек, известный также как кодек H 265, который сжимает сильнее в более чем в два раза, чем лучший видео кодек для Blu-ray.
Я бы назвал его просто — H 265, потому что это звучит круто, но его полное имя — High Efficiency Video Coding (HEVC). Это новый преемник Advanced Video Coding (AVC), кодек, также известный как H.264, который является одной из основных схем сжатия, используемых Blu-ray.
Идея HEVC заключается в том, чтобы предложить тот же уровень качества изображения, что и AVC, но с улучшенным сжатием, поэтому видео файл, сжатый с помощью этого кодека, будет в два раза меньше. Это важно, для вещания в формате 4K / Ultra HD (интернет и спутник), 4K Blu-ray и для других целей.
Но достаточно ли хорошо он в этом отношении, как он работает?
Преимущества HEVC по отношению к старым форматам
С выходом iOS 11 и macOS High Sierra Apple начала усиленно продвигать новые форматы для изображений (HEIF) и видео (HEVC). Задача упростилась в том плане, что новый кодек обеспечивал либо видео лучшего разрешения, либо меньшего размера, что в эпоху глобального обмена контентом имеет немаловажное значение – попробуйте передать по сети файл размером с 10-20 ГБ.
Использование блоков большего размера позволило также сократить время, затрачиваемое на кодирование и, что не менее важно, на декодирование, предотвращая фризы при просмотре видео.
Частично улучшения характеристик нового формата удалось добиться за счёт использования новых технологий, о которых мы уже упоминали. Но за всё нужно платить. В данном случае речь идёт о возрастании нагрузки на аппаратную часть, из чего следует вывод, что для обеспечения декодирования видео в формате HEVC потребуется более мощное оборудование. Второй негативный момент связан с тем, что соответствующие кодеки, по крайней мере, на начальном этапе распространения формата, встроены в популярные проигрыватели в ограниченном количестве. Ещё хуже обстоят дела с «железом» – только передовые модели телевизоров, медиаплееров, телевизионной техники и IP-камер умеют «переваривать» этот формат. Но это, разумеется, дело поправимое в среднесрочной перспективе. Во всяком случае, уже сейчас количество доступных аппаратных и софтверных декодеров стремительно растёт.
Что касается ПК, то поначалу H.265 поддерживали только видеокарты 970/980 от GeForce, а для кодирования среднего видео этого формата на более слабом оборудовании требовалось порядка 10 часов. Сегодня ситуация в этом плане гораздо более благоприятная, а дивиденды от использования HEVC очень даже ощутимы. Главное, что выгода будет тем больше, чем выше качество видео: для разрешения 720p, которое ещё совсем недавно было «золотым стандартом», размер файла будет примерно на 25% меньше, чем в формате H.264. Но для 4К выигрыш составит уже 50%, а если говорить о рипах Blue-ray, то здесь экономия достигается десятикратная, то есть видео такого качества вполне можно упаковать в каких-то 3-4 ГБ.
Рассмотрим основные особенности кодека HEVC с технической точки зрения:
Разумеется, это не все технологические новшества, характеризующие новый кодек. Но и перечисленного вполне достаточно, чтобы специалист смог понять, на что способен новый формат.
Кодек H.265
Поток данных, в 4K видео, значительно сильнее чем в HD видео. В то время как большинство из нас еще только привыкало к идее преимущества кодека H.264 по сравнению с MPEG-2, Группа Motion Picture Experts Group и International Telecommunication Union’s Telecommunication Standardization Sector (ITU-T), уже начали работу над следующим поколением сжатия видео.
Не желая делать небольшие, косметические улучшения, всякий раз, когда вводится новый стандарт сжатия, это должно быть значительным изменением. При каждом переходе на новый стандарт, либо объем видео становится в два раза меньше при том же качестве, либо более высокое качество изображения про том же объеме.
Как удалось этого достичь? Во многом благодаря расширению использования AVC (и других методов сжатия).
Во-первых, новый кодек сразу просматривает несколько кадров, чтобы увидеть, что в кадре не меняется. В большинстве сцен в телешоу или фильме, подавляющее большинство кадров не сильно меняется. Подумайте о сцене с кем-то разговаривающим. В кадре в основном голова. Фон не сильно изменится для многих кадров. В этом отношении большинство пикселей, составляющих лицо, вероятно, не будут сильно меняться (кроме губ, конечно). Поэтому вместо того, чтобы кодировать каждый пиксель из каждого кадра, кодируется начальный кадр, а затем после этого кодируются (в основном) только изменения.
Затем HEVC расширяет размер области, на которую смотрят эти изменения. Большие и меньшие «блоки» существенно, что обеспечивает дополнительную эффективность. Они могут быть больше, меньше и различной формы в HEVC, чем в предыдущих кодеках. Более крупные блоки, например, оказались более эффективными.
Слева — макроблокирование по AVC / H.264. Как вы можете видеть, справа гораздо больше гибкости, не говоря уже о больших размерах, для кодировщика HEVC / H.265.
Затем были улучшены другие вещи, такие как компенсация движения, пространственное предсказание и т. Д. Все это было бы сделано в AVC или даже раньше, но это требовало большей вычислительной мощности, чем это было в то время экономически целесообразно.
На этапе разработки алгоритм сжатия объективно проверяется на эффективность его исходного видео. Также проверяется и субъективно, профессионалами видео, сравнивающими различные методы сжатия в «слепом» тесте, где они не знают, какой именно метод перед ними. Сравнение человеком, имеет решающее значение. Просто потому, что компьютер говорит, что один уровень сжатия лучше, чем другой, не означает, что он выглядит лучше другого.
Поскольку H.265 работает намного интенсивнее, не ожидайте простого обновления прошивки, чтобы заставить ваше устройство декодировать его. На самом деле, это часть проблемы. Вам нужен аппаратный декодер. Ваш телевизор или медиа проигрывателя изначально должен иметь декодер, прошивкой тут не обойтись. Может ли ПК высокого класса декодировать его с помощью программного обеспечения? Может быть.
Как использовать кодек HEVC
Разумеется, обычного пользователя больше интересует вопрос, чем смотреть видео в формате HEVC/H.265, нежели технические подробности реализации улучшенного стандарта.
Если не привязываться к видеоадаптеру, то самый простой вариант – это использование программных плееров. В частности, всем хорошо известного VLC. Его последняя версия гарантированно поддерживает новый формат.
Но по умолчанию поддержка HEVC здесь выключена, и чтобы смотреть видео, закодированное H.265, необходимо выполнить следующие действия:
В результате вы получите возможность просматривать на компьютере видео, сжатое новым кодеком, вне зависимости от используемой операционной системы.
Примерно таким же способом можно установить HEVC/H.265 на Windows, используя последние версии других популярных медиаплееров – Media Player Classic, KMPlayer, GOM Player и других.
Поддержка H.265 реализована и в некоторых браузерах – Microsoft Edge (начиная с 16-й версии) и Safari (от одиннадцатой версии и выше).
Что касается MacOS High Sierra, то там с новым кодеком справляется стандартное приложение «Видео», хотя если вам нравятся сторонние плееры, то все вышесказанное остаётся справедливым. Аналогичная ситуация и с мобильными девайсами, работающими под iOS 11 – здесь главное, чтобы для воспроизведения нового формата хватило производительности устройства.
Что касается смартфонов и планшетов под Android, то на сегодня получить работающий кодек HEVC/H.265 можно только в приложении MX Player с тем же условием – производительности девайса должно хватать для воспроизведения видео нового формата.
Другое дело, что видео, записанного с использованием кодека HEVC, в сети пока не так много. Остаётся надеяться, что ситуация будет постепенно улучшаться, как это было с предшественником и разрешением 4К – сегодня количество каналов, вещающих в этом формате, растёт в арифметической прогрессии.
В немалой степени проблема касается и оборудования, способного поддерживать сверхвысокие разрешения – среди компьютерных мониторов таковых практически нет, да и телевизоры с разрешением 8192×4320 пикселей – пока не столь распространённое явление. Но технический прогресс не остановить…
Затраты на хранение данных зачастую становятся основным пунктом расходов при создании системы видеонаблюдения. Впрочем, они были бы несравнимо больше, если бы в мире не существовало алгоритмов, способных сжимать видеосигнал. О том, насколько эффективны современные кодеки, и какие принципы лежат в основе их работы, мы и поговорим в сегодняшнем материале.
Для большей наглядности начнем с цифр. Пускай видеозапись будет вестись непрерывно, в разрешении Full HD (сейчас это уже необходимый минимум, во всяком случае, если вы хотите полноценно использовать функции видеоаналитики) и в режиме реального времени (то есть, с фреймрейтом 25 кадров в секунду). Предположим также, что выбранное нами оборудование поддерживает аппаратное кодирование H.265. В этом случае при разных настройках качества изображения (высоком, среднем и низком) мы получим примерно следующие результаты.
Кодек
Интенсивность движения в кадре
Использование дискового пространства за сутки, ГБ
H.265 (Высокое качество)
H.265 (Высокое качество)
H.265 (Высокое качество)
H.265 (Среднее качество)
H.265 (Среднее качество)
H.265 (Среднее качество)
H.265 (Низкое качество)
H.265 (Низкое качество)
H.265 (Низкое качество)
Но если бы сжатия видео не существовало в принципе, мы бы увидели совсем иные цифры. Попробуем разобраться, почему. Видеопоток представляет собой не что иное, как последовательность статичных картинок (кадров) в определенном разрешении. Технически каждый кадр является двумерным массивом, содержащим информацию об элементарных единицах (пикселях), формирующих изображение. В системе TrueColor для кодирования каждого пикселя требуется 3 байта. Таким образом, в приведенном примере мы бы получили битрейт:
1920×1080×25×3/1048576 = ~148 Мб/с
Учитывая, что в сутках 86400 секунд, цифры выходят поистине астрономические:
148×86400/1024=12487 ГБ
Итак, если бы мы записывали видео без сжатия в максимальном качестве при заданных условиях, то для хранения данных, полученных с одной единственной видеокамеры в течение суток нам бы потребовалось 12 терабайт дискового пространства. Но даже система безопасности квартиры или малого офиса предполагает наличие, как минимум, двух устройств видеофиксации, тогда как сам архив необходимо сохранять в течение нескольких недель или даже месяцев, если того требует законодательство. То есть, для обслуживания любого объекта, даже весьма скромных размеров, потребовался бы целый дата-центр!
К счастью, современные алгоритмы сжатия видео помогают существенно экономить дисковое пространство: так, использование кодека H.265 позволяет сократить объем видео в 90 (!) раз. Добиться столь впечатляющих результатов удалось благодаря целому стеку разнообразных технологий, которые давно и успешно применяются не только в сфере видеонаблюдения, но и в «гражданском» секторе: в системах аналогового и цифрового телевидения, в любительской и профессиональной съемке, и многих других ситуациях.
Наиболее простой и наглядный пример — цветовая субдискретизация. Так называют способ кодирования видео, при котором намеренно снижается цветовое разрешение кадров и частота выборки цветоразностных сигналов становится меньше частоты выборки яркостного сигнала. Такой метод сжатия видеоданных полностью оправдан как с позиции физиологии человека, так и с точки зрения практического применения в области видеофиксации. Наши глаза хорошо замечают разницу в яркости, однако гораздо менее чувствительны к перепадам цвета, именно поэтому выборкой цветоразностных сигналов можно пожертвовать, ведь большинство людей этого попросту не заметит. В то же время, сложно представить, как в розыск объявляют машину цвета «паука, замышляющего преступление»: в ориентировке будет написано «темно-серый», и это правильно, ведь иначе прочитавший описание авто даже не поймет, о каком оттенке идет речь.
А вот со снижением детализации все оказывается уже совсем не так однозначно. Технически квантование (то есть, разбиение диапазона сигнала на некоторое число уровней с последующим их приведением к заданным значениям) работает великолепно: используя данный метод, размер видео можно многократно уменьшить. Но так мы можем упустить важные детали (например, номер проезжающего вдалеке автомобиля или черты лица злоумышленника): они окажутся смазаны и такая запись будет для нас бесполезной. Как же поступить в этой ситуации? Ответ прост, как и все гениальное: стоит взять за точку отсчета динамические объекты, как все тут же становится на свои места. Этот принцип успешно используется со времен появления кодека H.264 и отлично себя зарекомендовал, открыв ряд дополнительных возможностей для сжатия данных.
HEVC Video Extension
Если у вас ПК, и стоит Windows 10, то вы можете воспользоваться приложением, которое выпустила компания Microsoft. HEVC Video Extension — приложение, позволяющее смотреть видео в формате HEVC на компьютерах. Однако, стоит заметить, что для того, чтобы это приложение работало, у вас должен быть довольно мощный компьютер, с процессорами Intel седьмого поколения. Ну и сама операционная система, должна быть Windows 10.
Если ваш ПК отвечает этим требованиям, то это расширение вы можете получить при обновлении Windows. Но если вы не стали обновлять свою ОС, но хотите смотреть фильмы в формате HEVC, то вы можете скачать приложения с официального сайта Microsoft.
HEVC Video Extension в магазине приложений Microsoft
Кодирование
На сегодняшний день H265, он же HEVC уже поддерживается на большом количестве энкодеров: софтверные, обычные аппаратные (Nvidia NVENC, Intel QSV) и железные аппаратные.
Какое-то заметное применение H265 можно встретить на спутниковом телевидении (редкие, но уже встречающиеся каналы с гигантским битрейтом), IP камеры и всякие бесчисленные коробочки для захвата и кодирования HDMI (и немножко SDI).
Зачем нужно захватывать HDMI и публиковать на сайт? Ну как бы догадайтесь сами, особенно если железка обещает вскрыть HDCP. Подскажу лишь, что это очень популярно для стриминга игр, когда не хочется добавлять никакой нагрузки на компьютер.
Здесь надо быть очень аккуратными с тем, что именно будет уметь железка или софтина. Так, например, Hisilicon достаточно давно выпустил первый чипсет с поддержкой H265 для IP-камер, а вот софт отстал чуть ли не на полтора года от них. Сегодня до сих пор продается полно камер, у которых написано H265, а они не могут его отдавать в реальном времени — только экспортировать файлы через нерабочий китайский софт. В чём тут выражается поддержка H265, продавцы ответить не могут, но упорно кивают головой: да, да, можем h265.
Аналогичная проблема и с RTMP энкодерами. Один из частейших вопросов: «а что, ваш софт не умеет H265 по RTMP?».
Это не наш софт «не умеет», а RTMP не умеет H265. В RTML используется flv-подобная упаковка кадров и H265 ни в одном, ни в другом стандарте как доступные не отмечены. Есть всякие хитрые хаки, позволяющие запихать H265 в протокол, не рассчитанный на это, но называть это RTMP уже будет перебор — это будет проприетарный, закрытый протокол. Подобные изменения существуют, делаются они китайцами, а это как правило означает просто истеричное отношение к предложениям поделиться спецификацией на протокол.
Т.е. железо может уметь H265, а софт, запущенный на нём, может отставать в развитии и просто не уметь с ним работать и такого пока ещё полно.
Еще одно преимущество
В то время как большинство потенциальных преимуществ HEVC сосредоточены на 4K, его лучшее сжатие обеспечивает преимущества для HD. Более низкая пропускная способность с HD означает, что больше людей может получить HD. Люди, у которых низкая скорость интернета, с новым кодеком смогут смотреть HD видео. Если у вас тариф с оплатой за мегабайты, то более низкие скорости передачи данных также означают более дешевый просмотр HD.
Проигрыватель для HEVC.
Если же у вас либо другая ОС, например Windows 7, или просто ваш компьютер не столь мощный, то вы можете скачать плейер, с поддержкой HEVC, например WindowsPlayer. Данный плейер, вы можете скачать с официального сайта программы.
Проигрыватель WindowsPlayer для воспроизведения файлов HEVC
Конкуренция
H265 сравнивают с h264: ведь разницу в битрейте надо ещё увидеть, а поддержка h264 сейчас есть абсолютно везде
H265 сравнивают с VP10, потому что так попросил Гугл. На практике у VP10 проблемы с ещё меньшей поддержкой со стороны железа (а значит для него нужно ещё больше батареек и процессорной мощности) и плохие протоколы проигрывания.
H265 начали сравнивать с AV1, но это пока вообще можно не рассматривать — слишком новая штука. Очень интересно, подождем несколько лет.
Чем смотреть HEVC.
Понятно, сразу возникает вопрос, как смотреть HEVC. Есть несколько решений, в зависимости от того, что у вас есть.
Флэш-карты для видеонаблюдения: когда значение имеет не только размер
И вновь вернемся к табличке, с которой мы начали сегодняшний разговор. Давайте подсчитаем, сколько дискового пространства нам понадобится в том случае, если мы хотим хранить видеоархив за последние 30 дней при максимальном качестве видеозаписи:
138×30/1024 = 4
По нынешним меркам 4 терабайта для винчестера индустриального класса — практически ничто: современные жесткие диски для видеонаблюдения имеют емкость до 14 терабайт и могут похвастаться рабочим ресурсом до 360 ТБ в год при MTBF до 1.5 миллионов часов. Что же касается карт памяти, то здесь все оказывается не так однозначно.
В IP-камерах флэш-карты играют роль резервных хранилищ: данные на них постоянно перезаписываются, чтобы в случае потери связи с видеосервером недостающий фрагмент видеозаписи можно было восстановить из локальной копии. Такой подход позволяет существенно повысить отказоустойчивость всей системы безопасности, однако при этом сами карты памяти испытывают колоссальные нагрузки.
При бытовом использовании подобное попросту невозможно, поэтому даже самая бюджетная карта памяти способна прослужить вам несколько лет к ряду без единого сбоя. А все благодаря алгоритмам выравнивания износа (wear leveling). Схематично их работу можно описать следующим образом. Пусть в нашем распоряжении есть новенькая флеш-карта, только что из магазина. Мы записали на нее несколько видеороликов, использовав 7 из 16 гигабайт. Через некоторое время мы удалили часть ненужных видео, освободив 3 гигабайта, и записали новые, объем которых составил 2 ГБ. Казалось бы, можно задействовать только что освободившееся место, однако механизм выравнивания износа выделит под новые данные ту часть памяти, которая ранее никогда не использовалась. Хотя современные контроллеры «тасуют» биты и байты куда более изощренно, общий принцип остается неизменным.
Напомним, что кодирование битов информации происходит путем изменения заряда в ячейках памяти за счет квантового туннелирования электронов сквозь слой диэлектрика, что вызывает постепенный износ диэлектрических слоев с последующей утечкой заряда. И чем чаще меняется заряд в конкретной ячейке, тем раньше она выйдет из строя. Выравнивание износа как раз направлено на то, чтобы каждая из доступных ячеек перезаписывалась примерно одинаковое количество раз и, таким образом, способствует увеличению срока службы карты памяти.
Нетрудно догадаться, что wear leveling перестает играть хоть сколько-нибудь значимую роль в том случае, если флэш-карта постоянно перезаписывается целиком: здесь на первый план уже выходит выносливость самих чипов. Наиболее объективным критерием оценки последней является максимальное количество циклов программирования/стирания (program/erase cycle), или, сокращенно, циклов P/E, которое способно выдержать флеш-память. Также достаточно точным и в данном случае наглядным (так как мы можем заранее рассчитать объемы перезаписи) показателем является коэффициент TBW (Terabytes Written). Если в технических характеристиках указан лишь один из перечисленных показателей, то вычислить другой не составит особого труда. Достаточно воспользоваться следующей формулой:
TBW = (Емкость × Количество циклов P/E)/1000
Так, например, TBW флеш-карты емкостью 128 гигабайт, ресурс которой составляет 200 P/E, будет равен: (128 × 200)/1000 = 25,6 TBW.
Давайте считать дальше. Выносливость карт памяти потребительского уровня составляет 100–300 P/E, и 300 — это в самом лучшем случае. Опираясь на эти цифры, мы можем с достаточно высокой точностью оценить срок их службы. Воспользуемся формулой и заполним новую таблицу для карты памяти емкостью 128 ГБ. Возьмем за ориентир максимальное качество картинки в Full HD, то есть в сутки камера будет записывать 138 ГБ видео, как мы выяснили ранее.
Текущую ситуацию в области медиакодеков, можно описать буквально несколькими словами: простые решения себя исчерпали. С каждым годом материал для кодирования становится все сложнее, а требования к качеству результата – все выше. В этих условиях, когда лобовая атака уже не дает эффекта, особое значение приобретает оптимизация как кодирования, так и воспроизведения медиа под конкретные платформы с использованием их самых современных возможностей. Чего можно добиться такой оптимизацией, мы покажем на примере перспективного кодека Н.265. В качестве целевой платформы рассмотрим серверное решение Intel — процессор Xeon.
Краткое описание H.265/HEVC
- Особые возможности для произвольного доступа и сращивания цифровых потоков. В H.264/MPEG-4 AVC цифровой поток должен всегда начинаться с блока адресации IDR, а в HEVC поддерживается произвольный доступ.
- Изображение разделяется на единицы дерева кодирования (CTU), каждая из которых содержит блоки дерева кодирования (CTB) яркости и цветности. Во всех прежних стандартах кодирования видео использовался фиксированный размер массива для выборок яркости — 16×16. HEVC поддерживает блоки CTB разного размера, который выбирается в зависимости от потребностей кодировщика с точки зрения памяти и вычислительной мощности.
- Каждый блок кодирования (СВ) может быть рекурсивно разделен на блоки преобразования (ТВ). Разделение определяется остаточным квадродеревом. В отличие от прежних стандартов в HEVC один блок ТВ может охватывать несколько блоков предсказания (РВ) для перекрестных предсказываемых единиц кодирования (CU).
- Направленное предсказание с 33 различными направлениями ориентации для блоков преобразования (TB) размером от 4×4 до 32×32. Возможное направление предсказания — все 360 градусов. HEVC поддерживает различные методики кодирования предсказания интракадров.
Проблемы производительности HEVC
- Отсутствие параллельной схемы.
- Неэффективная настройка векторизации.
Рисунок 1. Профиль проекта HM — параллельная работа потоков
Рисунок 2. Профиль проекта HM — ресурсоемкий код
-
(совместим с HM10.0, оптимизация декодера) (совместим с HM, распараллеливание и векторизация)
Рисунок 3. Нагрузка на ЦП в проекте X.265
Рисунок 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
Таблица 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.
В чем разница между H.264 и H.265?
В H.265 используются все те же принципы сжатия, что и в H.264: фоновое изображение сохраняется единожды, а затем фиксируются лишь изменения, источником которых являются движущиеся объекты, что позволяет значительно снизить требования не только к объему хранилища, но и к пропускной способности сети. Однако в H.265 многие алгоритмы и методы прогнозирования движения претерпели значительные качественные изменения.
Так, обновленная версия кодека стала использовать макроблоки дерева кодирования (Coding Tree Unit, CTU) переменного размера с разрешением до 64×64 пикселей, тогда как ранее максимальный размер такого блока составлял лишь 16×16 пикселей. Это позволило существенно повысить точность выделения динамических блоков, а также эффективность обработки кадров в разрешении 4K и выше.
Кроме того, H.265 обзавелся улучшенным deblocking filter — фильтром, отвечающим за сглаживание границ блоков, необходимым для устранения артефактов по линии их стыковки. Наконец, улучшенный алгоритм прогнозирования вектора движения (Motion Vector Predictor, MVP) помог заметно снизить объем видео за счет радикального повышения точности предсказаний при кодировании движущихся объектов, чего удалось достичь за счет увеличения количества отслеживаемых направлений: если ранее учитывалось лишь 8 векторов, то теперь — 36.
Помимо всего перечисленного выше, в H.265 была улучшена поддержка многопоточных вычислений: квадратные области, на которые разбивается каждый кадр при кодировании, теперь могут обрабатываться независимо одна от другой. Появилась и поддержка волновой параллельной обработки данных (Wavefront Parallelel Processing, WPP), что также способствует повышению производительности сжатия. При активации режима WPP обработка CTU осуществляется построчно, слева направо, однако кодирование каждой последующей строки может начаться еще до завершения предыдущей в том случае, если данных, полученных из ранее обработанных CTU, для этого достаточно. Кодирование различных строк CTU с временной задержкой со сдвигом, наряду с поддержкой расширенного набора инструкций AVX/AVX2 позволяет дополнительно повысить скорость обработки видеопотока в многоядерных и многопроцессорных системах.
Сжатие (хорошее, плохое, с потерями)
Объем необработанных данных, выходящих из профессиональной HD-камеры, является огромным. Нет возможности удобно доставить его в ваш дом. Вместо этого видео сжимается, чтобы уменьшить объем данных в более управляемую форму.
Есть много способов сделать это, одним из самых простых является снижение качества. В некоторых случаях это нормально. Подумайте о видео на YouTube с низким качеством. Не очень, правда? Часто это связано с тем, что видео сильно сжато (до или во время загрузки).
Сильное сжатие при помощи различных кодеков может быть технически одинаковым, но в зависимости от кодека, изображение может казаться более мягким, шумным или иметь странные отвлекающие артефакты (как показано выше).
Но это не самая хорошая идея, если нужно сохранить намерение режиссера или показать свой новеньки 77-дюймовый телек.
Таким образом, другой вариант — использовать лучшее сжатие. В этом случае вы можете в основном думать о «лучшем» сжатии как «о более умном» сжатии. Он берет тот же оригинал (видео) и находит лучшие способы уменьшить количество данных, не жертвуя качеством. Каждые несколько лет вычислительная мощность передачи улучшилась настолько, что позволяет использовать более интенсивные алгоритмы сжатия процессора, а также сжимать данные без ухудшения качества.
Это различие между «большим» сжатием и «лучшим» сжатием важно, так как на самом деле термины не являются взаимозаменяемыми в этом контексте. Вы можете уменьшить объем данных, необходимых для сигнала, либо путем сжатия и ухудшения изображения, либо с помощью более эффективной компрессии («лучшего» сжатия).
Позвольте мне сказать это так. Скажите, что у вас есть бушель из яблок. Вам нужно поместить 100 яблок внутрь. Вы можете сделать это с большим сжатием (сокращение яблок до пюре) или с лучшим сжатием (поиск лучшего способа сделать их целыми, но при этом, уменьшить объем занимаемого места).
Большее сжатия: яблочное пюре
Лучшее сжатие: больше яблок, в одном и том же пространстве.
Как вы можете видеть из этого восхитительного примера, «более» сжатие легче сделать, в то время как «лучшее» сжатие требует более продуманных и / или лучших технологий.
Заключение
Начните искать HEVC (или H.265) в качестве позиции на телевизорах, проигрывателях Blu-ray и других медиаплеерах в будущем. Почти все основные модели начиная с моделей 2014 года выпуска включают необходимый аппаратный декодер, хотя лучше сразу убедится, что он действительно есть, чем потом жалеть о покупке.
Было много ворчаний во время перехода на H.264 / AVC при появлении Blu-ray. Теперь тоже самое происходит и появлением HEVC. Но более низкие скорости передачи данных при сохранении качества — это хорошо для всех.
Распространённый в «нулевых» формат DVD, основанный на кодеке MPEG2, по мере появления телевизоров и мониторов с высоким разрешением уже не мог удовлетворять возросшим требованиям к качеству видео. Поэтому появление в 2003 году формата кодирования H.264 было воспринято в основном доброжелательно. Но со временем и этот стандарт перестал отвечать современным нуждам – требовался такой кодек, который бы обеспечивал меньший размер файла при том же битрейте (или увеличенный битрейт при неизменном объёме видеофайла). Так появился усовершенствованный формат H.265, именуемый также HEVC, позволивший уменьшить размеры файлов на 30-50% при сравнимом качестве. В нём реализована поддержка разрешения уровня 8К (8192×4320 пикселей). Насколько успешно продвигается этот стандарт? Давайте разбираться.
Вещание
Сейчас в дикой природе H265 проще всего встретить на IP-камерах: там оно уже есть и уже потихоньку распространяется, спасибо HUAWEI. Так же можно на спутниках найти 30-мегабитные каналы, сжатые в H265.
По нашему опыту постепенно делаются попытки внедрить его в различных OTT-сервисах, где есть контроль за устройством.
По поводу вещания ситуация такая: H265 в протоколе HLS поддерживается всеми уже очень давно, а эппл очень вовремя очухались и зафиксировали очевидное в стандарте. Но всем пока что плевать, потому что мало какие айфоны могут его проигрывать.
Так же H265 передается по RTSP: есть упаковка и в SDP, и в RTP. Остается старый нюанс с передачей bframes по RTSP, но это отдельная головная боль.
Если вы встречаете H265 и RTMP, то скорее всего это болтовня, но если оно реально работает, значит люди просто напихали байт и пользуются патченым сервером и клиентом. В стандартный RTMP H265 не влезает.
Читайте также: