Алгоритм сжатия h 264 что это
Цифровой формат для сжатия видео H.264 (MPEG4 AVC)
Что такое H.264
Почему важно сжатие?
Представьте слона, пытающегося пробраться в мышиную норку. Исходный формат видео HD (высокой четкости), используемый при записи веб-камерой или цифровой камерой, может занимать очень много места на жестком диске — гигабайты, которые могли бы пригодиться для других файлов. Веб-сайты, включая Facebook и YouTube, а также поставщики интернет-услуг, такие как Comcast и ATT, устанавливают ограничения по размеру файлов. Файл видео высокой четкости в исходном формате зачастую может оказаться слишком велик для сайтов и поставщиков интернет-услуг.
Как работает H.264?
Видео — это поток отдельных изображений или кадров. H.264 удаляет из потока избыточную информацию. Каждый кадр делится на маленькие блоки размером в 4×4 пикселя для высокоточного анализа. При обработке кадра средство сжатия (кодировщик) ищет блоки в предыдущем кадре, только что записанном, и в следующем кадре в последовательности. Оно находит, что изменилось, а что осталось прежним. Затем избыточная информация удаляется. Этот процесс повторяется на протяжении всего потока.
Благодаря этому размер файла уменьшается эффективнее, чем даже при использовании формата MPEG-4. При воспроизведении видео декодер в устройстве воспроизведения извлекает информацию из нескольких кадров, чтобы получить полное изображение высокой четкости.
Как работает H.264 с веб-камерой?
Изображения захватываются датчиком веб-камеры, оцифровываются и сжимаются в формат H.264. Все кодирование видео выполняется в камере, так что вся нагрузка не ляжет на процессор компьютера. Затем видеоданные передаются по USB-кабелю для просмотра на компьютере, для видеообщения в реальном времени, для роликов Facebook и YouTube, для компактного хранения на диске.
Что для пользователя означает поддержка формата H.264 в камере?
Поскольку H.264 оптимизирован для видео высокого разрешения (например, с количеством строк 720 или 1080), некоторые функции камер, не поддерживающих H.264, больше недоступны с таким высоким разрешением.
Примечание. Эти функции по-прежнему можно использовать (только для видеозаписей), если выбрать более низкое разрешение видео вместо 720p или 1080p.
Особенности стандарта сжатия видеоданных H.264
Преимущества H.264
По сравнению с MPEG2 (DVD-Video) и MPEG4 ASP (DivX, XviD), сжатие H.264 работает существенно более эффективно, обеспечивая лучшее качество изображения (вплоть до недостижимого для MPEG2 и MPEG4 ASP уровня) и меньший объём файла.
Недостатки H.264
Главным недостатком H.264 являются заметно более высокие требования к оборудованию для кодирования и воспроизведения видеофайлов.
Например, на компьютере на основе процессора Intel Pentium 4 с частотой 3,2 ГГц комфортно (плавно, без рывков) при использовании декодера ffdshow tryouts под Windows Vista воспроизводится лишь видео в «среднем» HD-разрешении — 1280×720. Так называемое Full-HD-видео (1920×1080) в зависимости от сложности сцен может уже заметно «притормаживать». Следует заметить, впрочем, что в Windows предыдущего поколения — XP — Full-HD-видео на том же оборудовании во многих случаях воспроизводится вполне плавно.
Эффективность использования ресурсов компьютера при воспроизведении в некоторой степени зависит от используемого декодера.
Декодеры H.264
Поддержка H.264
H.264 принят в качестве стандарта для сжатия видео высокой чёткости (HD, HDTV), распространяемого на оптических носителях нового поколения — Blu-ray и HD DVD, используется в мобильных устройствах, поддерживается в Apple QuickTime, получает распространение в системах цифрового телевещания, видеоконференцсвязи, видеонаблюдения и проч. Adobe Flash Player, являющийся стандартом де-факто для мультимедийных web-приложений и онлайн-видеохостингов вроде YouTube, поддерживает прямое воспроизведение H.264-видео начиная с версии 9.0.115, вышедшей в конце 2007 г.
Стандарты, форматы, кодеки, контейнеры
Кодек и стандарт — не одно и то же. Стандарт — это спецификация (описание) алгоритма сжатия (например, H.264), кодек — конкретная его программная реализация (например, x264).
Не следует также путать формат данных и формат контейнера, в котором эти данные могут храниться. Одни и те же данные (например, сжатые по алгоритму H.264 кодером x264) могут быть упакованы в разные контейнеры (например, Matroska, MP4 или AVI). И наоборот, в контейнере одного и того же формата (например, MKV) не обязаны находиться видеоданные в формате H.264 — можно легко столкнуться с MKV-файлом, внутри которого будет обычное DivX-видео.
Форматы контейнеров данных
Существует несколько распространённых форматов контейнеров, основные из них — MP4, Matroska (MKV) и AVI.
MP4 Официальный стандарт контейнера для видео H.264. Главный недостаток MP4 состоит в том, что, по спецификации, такой файл может содержать звук только в формате AAC. Это приводит к вынужденным потерям качества звука, например, при создании резервных копий DVD-фильмов из-за необходимости перекодирования из одного формата сжатия с потерями (AC3, Dolby Digital) в другой (AAC). Чисто технически в контейнер MP4 можно поместить поток любого формата, но возможность воспроизведения такого файла в любом плеере не будет гарантированной. Matroska (Матрёшка, MKV) Открытый формат контейнера, официально не принят какой-либо организацией по стандартизации, но является чрезвычайно гибким, а потому широко используется и поддерживается как программными, так и аппаратными плеерами известных производителей: как выполненными в виде самостоятельных устройств — например, WD TV Live, так и встроенными в современные телевизоры. В отличие от MP4, контейнер Matroska может содержать звук в любом формате — например, AC3, являющемся стандартным для DVD-Video. Это даёт возможность, создавая, например, резервную копию DVD-фильма, закодировать видео в H.264, но звук при этом оставить в исходном формате AC3, исключив потери качества звука, связанные с перекодированием. AVI В контейнере AVI обычно представлено видео в популярных форматах DivX и XviD (MPEG4 ASP). Для хранения данных, закодированных по стандарту H.264, контейнер AVI формально не предназначен и потому для этих целей обычно не используется, а в редких случаях такого, некорректного, его применения возможность воспроизведения соответствующих файлов не гарантируется.
Воспроизведение H.264-видеофайлов
Для воспроизведения видеофайлов формата H.264 есть несколько возможностей.
Воспроизведение видео на компьютере возможно следующими способами (все указанные программные продукты бесплатны):
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
H.264/MPEG-4 AVC
Целью проекта формата H. 264/AVC было создание стандарта, способного обеспечить хорошее качество видео при существенно более низких скоростях, чем предыдущие стандарты (например, MPEG-2 и H. 263 [Источник 1] ), без всякого усложнения конструкции чтобы формат был практичен и не слишком дорог в реализации. Дополнительной целью было обеспечить достаточную гибкость, чтобы позволить применять стандарт в широком спектре различных сетей и систем, в том числе низких и высоких скоростей, низкое и высокое разрешение видео, вещание, DVD хранения, RTP/IP-пакетов в сетях, и мультимедиа телефонии. Стандарт H. 264 можно рассматривать как «семейство стандартов» которое состоит из ряда различных профилей. Конкретный декодер декодирует, по меньшей мере один, но не обязательно все профили. Спецификация дешифратора описывает, какие профили могут быть декодированы. H. 264, как правило, используется для сжатия с потерями, хотя также возможно их избежать.
Содержание
История
В начале 1998 года группа экспертов видео кодирования (VCEG) объявила о приеме заявок на проект под названием H.26L, с целью удвоить эффективность кодирования (что означает вдвое уменьшить битрейт, необходимый для данного уровня качества) по сравнению с любыми другими существующими стандартами кодирования видео для широкого спектра применения. VCEG возглавил Гарри Салливан. Первый проект был принят в августе 1999 года. В 2000 году Томас Виганд) стал сопредседателем VCEG.
В декабре 2001 года, VCEG и группа экспертов по видео изображениям (MPEG) создали совместную видео группу (JVG), с целью доработки стандарта кодирования видео. Официальное утверждение спецификации появилось в марте 2003 года. С января 2005 по ноябрь 2007 года, идет работа над расширением формата H.264/AVC к масштабируемости в приложении SVC. С июля 2006 года по ноябрь 2009 года, создано расширение формата H.264/AVC к бесплатному телевидению и 3D-телевидению. Эта работа включала разработку двух новых профилей по стандартам мультиизображения высокого профиля и стерео высокого профиля.
Стандартизации первой версии формата H.264/AVC была завершена в мае 2003 года. Эти расширения позволили обеспечить более высокое качество кодирования видео увеличить разрядность точность и высокое разрешение цветовой информации. Проектные работы по расширения верности ассортимент был завершен в июле 2004 года, и работы над ними были завершены в сентябре 2004 года.
Следующей важной особенностью добавлен в стандарт масштабируемой кодировкой видео SVC. SVC позволяет строительство потоков, которые содержат суб-потоки, которые также соответствуют стандарту, в том числе один такой битовый поток, известный как «базовый слой», который может быть декодирован с помощью кодека H. 264/AVC. Масштабируемые расширения кодирования видео были завершены в ноябре 2007 года.
Следующей важной особенностью добавлен в стандарт Многоракурсной кодирования видео (в MVC). Указанных в приложении H стандарт H. 264/AVC, MVC и позволяет строительство потоков, которые представляют более чем один вид видео сцены. Важным примером этой функции является кодирование стереоскопического 3D-видео. Были два профиля, развитых в работе с MVC: Мультиизображение, высокий профиль поддерживает произвольное Количество просмотров, и стерео высокий профиль, разработанный специально для двух-просмотра стереоскопического видео.
Возможности
Стандарт H.264 / AVC / MPEG-4 Part 10 содержит ряд возможностей, позволяющих значительно повысить эффективность сжатия видео по сравнению с предыдущими (такими, как ASP) стандартами, обеспечивая также большую гибкость применения в разнообразных сетевых средах. Основные из них:
Многокадровое предсказание
Пространственное предсказание от краёв соседних блоков для кадров
Новая методика экстраполяции краёв ранее декодированных частей текущего изображения повышает качество сигнала, используемого для предсказания.
Сжатие макроблоков без потерь
Гибкие функции чересстрочного сжатия
Новые функции преобразования
Квантование
Энтропийное кодирование квантованных коэффициентов трансформации
Функции устойчивости к ошибкам
Благодаря ASO, так как каждая часть изображения может быть декодирована независимо от других (при определённых ограничениях кодирования), новый стандарт позволяет посылать и получать их в произвольном порядке друг относительно друга. Это может снизить задержку в приложениях реального времени, особенно при использовании на сетях, имеющих режим работы доставка вне очереди. Эти функции могут также использоваться для множества других целей помимо восстановления ошибок.
Параметры кодирования H.264
Кадры
I –Кадры: также называются ключевыми (keyframes) или «опорными», могут содержать только независимо сжатые макроблоки. P – Кадры: могут содержать как независимо сжатые макроблоки, так и макроблоки со ссылкой на другой I- или P- кадр. B – Кадры: ссылаются на ближащие I-,P или B-кадры. Никакие кадры не ссылаются на B-кадры.
Любое воспроизведение начинается с ключевого I – Кадра.Для того чтобы увеличить интерактивность нужно помещать I-кадры как можно чаще (каждые 5-10 секунд для стриминга файла).Во время смены сцены (сюжета) также необходимо вставлять I-Кадр (указать в программе). Для адаптивного стриминга нужно помещать I-кадр в начале каждого чанка (2 сек, 3 сек, и т.д.).
Профили
Стандарт определяет комплекты возможностей, которые называются профили, ориентированные на конкретные классы приложений.
Для профессионального применения стандарт содержит четыре дополнительных all-Intra («всё внутри») профиля, которые характеризуются отсутствием межкадрового сжатия. То есть, при кодировании одного кадра информация о соседних не используется:
С принятием расширения Scalable Video Coding (SVC) к стандарту были добавлены три профиля, соответствующие базовым, с добавлением возможности включать потоки более низкого разрешения.
Добавление расширения Multiview Video Coding (MVC) принесло ещё два дополнительных профиля:
Уровни
Согласно определению стандарта, «уровень» является определенным набором ограничений, указывающих степень требуемой производительности декодера для профиля. Например, поддержка уровня в профиле будет указывать максимальное разрешение изображения, частоту кадров и битрейт так, что декодер можно будет использовать. Декодер, который соответствует данному уровню, обязан декодировать все потоки битов, которые кодируются для этого уровня и для всех более низких уровней.
Уровень | Макс. кол-во макроблоков | Макс. скорость видеопотока (VCL) кбит/с | Примеры максимального разрешения@частоты кадров (макс. кол-во сохранённых кадров) | ||||
---|---|---|---|---|---|---|---|
в секунду | в кадре | BP, XP, MP | HiP | Hi10P | Hi422P, Hi444PP | ||
1 | 1485 | 99 | 64 | 80 | 192 | 256 | 128×96@30,9 (8) 176×144@15,0 (4) |
1b | 1485 | 99 | 128 | 160 | 384 | 512 | 128×96@30,9 (8) 176×144@15,0 (4) |
1.1 | 3000 | 396 | 192 | 240 | 576 | 768 | 176×144@30,3 (9) 320×240@10,0 (3) 352×288@7,5 (2) |
1.2 | 6000 | 396 | 384 | 480 | 1152 | 1536 | 320×240@20,0 (7) 352×288@15,2 (6) |
1.3 | 11880 | 396 | 768 | 960 | 2304 | 3072 | 320×240@36,0 (7) 352×288@30,0 (6) |
2 | 11880 | 396 | 2000 | 2500 | 6000 | 8000 | 320×240@36,0 (7) 352×288@30,0 (6) |
2.1 | 19800 | 792 | 4000 | 5000 | 12000 | 16000 | 352×480@30,0 (7) 352×576@25,0 (6) |
2.2 | 20250 | 1620 | 4000 | 5000 | 12000 | 16000 | 352×480@30,7 (10) 352×576@25,6 (7) 720×480@15,0 (6) 720×576@12,5 (5) |
3 | 40500 | 1620 | 10000 | 12500 | 30000 | 40000 | 352×480@61,4 (12) 352×576@51,1 (10) 720×480@30,0 (6) 720×576@25,0 (5) |
3.1 | 108000 | 3600 | 14000 | 17500 | 42000 | 56000 | 720×480@80,0 (13) 720×576@66,7 (11) 1280×720@30,0 (5) |
3.2 | 216000 | 5120 | 20000 | 25000 | 60000 | 80000 | 1280×720@60,0 (5) 1280×1024@42,2 (4) |
4 | 245760 | 8192 | 20000 | 25000 | 60000 | 80000 | 1280×720@68,3 (9) 1920×1080@30,1 (4) 2048×1024@30,0 (4) |
4.1 | 245760 | 8192 | 50000 | 62500 | 150000 | 200000 | 1280×720@68,3 (9) 1920×1080@30,1 (4) 2048×1024@30,0 (4) |
4.2 | 522240 | 8704 | 50000 | 62500 | 150000 | 200000 | 1920×1080@64,0 (4) 2048×1080@60,0 (4) |
5 | 589824 | 22080 | 135000 | 168750 | 405000 | 540000 | 1920×1080@72,3 (13) 2048×1024@72,0 (13) 2048×1080@67,8 (12) 2560×1920@30,7 (5) 3680×1536@26,7 (5) |
5.1 | 983040 | 36864 | 240000 | 300000 | 720000 | 960000 | 1920×1080@120,5 (16) 4096×2048@30,0 (5) 4096×2304@26,7 (5) |
Буферизация декодированной картинки
Ранее закодированные снимки использовались форматом H.264/AVC, чтобы обеспечить предсказание значений выборок в других картинках. Это позволяет энкодеру принимать эффективные решения по выбору лучшего способа для кодирования данного рисунка. В декодере, такие картины хранятся в виртуальной буфере декодированных картинок. Максимальная мощность такого буфера измеряется в единицах кадров (или пары полей).
Реализация продукта
В 2009 году рабочая группа HTML 5 раскололась. Одной группой был введён бесплатный видео формат Ogg Theora, который был свободным от патентов, и H.264, который содержит запатентованную технологию. В конце июля 2009 года, Google и Apple было сказано, что они поддерживают H.264, а Mozilla и Opera поддерживают Ogg Theora (теперь Google, Mozilla и Opera поддерживают формат Theora и WebM/VP8. [Источник 8] Microsoft, с выходом Explorer 9, добавил поддержку HTML 5 видео, закодированных с помощью H.264. В январе 2011 года Google объявил, что они убрали поддержку H.264 из браузера Chrome и поддерживает как формат Theora и WebM/VP8 и призывает использовать только открытые форматы.
18 марта 2012 года, Mozilla объявила поддержку H.264 в Firefox на мобильных устройствах, в связи с преобладанием кодировки H.264 и повышения энергетической эффективности использования специальных аппаратных средств на которых был распространён декодер H.264. 20 февраля 2013 года реализована поддержка в Firefox для декодирования H.264 на Windows 7 и выше. В Firefox 35.0, выпущенной 13 января 2015 года поддержка H.264 на OS X 10.6 и выше.
Производители
Feature | QuickTime | Nero Digital | LEAD Technologies | x264 | MainConcept | Elecard | Telestream Episode | ProCoder | Avivo | Elemental Technologies | Integrated Performance Primitives |
---|---|---|---|---|---|---|---|---|---|---|---|
B кадры | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да |
Система отсчета кадров | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да |
Кодирование полей (PicAFF, MBAFF) | Нет | Да | Да | Да | Да | Да | Нет | Да | Да | Да | Нет |
Энтропийное кодирование (CABAC) | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да |
8×8 vs. 4×4 адаптивность | Нет | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да |
Квантование | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Цветовая субдискретизация | Нет | Нет | Нет | Да | Да | Да | Да | Нет | Нет | Да | Нет |
Глубина выборки (биты) | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Предсказание потерь | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Оборудование
Потому что H.264 кодирование и декодирование требует значительных вычислительных мощностей в конкретных видах арифметических операций, выполняется реализация программного обеспечения, с помощью которого операции выполняются на универсальных процессоров, как правило, меньше эффективной мощности. Однако, новые процессоры имеют достаточную вычислительную мощность для выполнения операций кодирования SD и HD в режиме реального времени. Эффективность сжатия зависит от алгоритмической реализации видео и от того, не используется ли оборудование или внедрение программного обеспечения. Разница между аппаратным и программным обеспечением, основана на эффективности, гибкости и стоимости. Процессор, как известно должен быть значительно более гибкий, особенно при кодировании одновременно в нескольких форматах, различным битрейтом и разрешением (мульти-экран видео), и, возможно, с дополнительными функциями поддержки формата и передовыми интегрированными рекламными возможностями. Программное решение на базе процессора обычно делает его гораздо легче для балансировки нагрузки нескольких одновременных сессий кодирования в рамках одного процессора. 2-е поколение Intel с сердечником i3/i5 и i7 процессоров, введена в январе 2011 года на выставке CES (выставка бытовой электроники) и предлагала интегрированный аппаратный полный HD H. 264 кодер, известный как Intel быстрая синхронизация видео.
Аппаратный шифратор H.264 может быть ASIC или FPGA. ASIC H.264 кодер обладает функциями доступными практически всем различным компаниям, но конструкция сердечника, как правило, лицензирована у одной из немногих компаний, таких как Chips&Media и Allegro DVT, On2 (ранее Hantro, приобретена Google), Imagination Technologec. Некоторые компании обладают и ASIC и FPGA продукцией.
Texas Instruments производит линии ядра DSP, которые выполняют с H.264 кодирования 1080p на 30fps. Это позволяет обеспечить гибкость в отношении кодеков и в то же время более эффективно, чем программное обеспечение на базе универсального процессора.
Лицензирование
Недостатки
Кодеки для MPEG-4 AVC более требовательны к ресурсам, нежели кодеки на основе MPEG-4 ASP (такие, как DivX и XviD), однако это компенсируется другими достоинствами [Литература 1]
Формат запатентован, и создатели кодеков обязаны платить за их распространение путём покупки лицензий. С 2011 года MPEG LA могла бы начать взимать плату и с тех, кто участвует в кодировании и/или бесплатном предоставлении пользователям видеопотока в AVC. Однако позже этот срок был изменён на 2015 год, а 26 августа 2010 года компания MPEG LA объявила, что за бесплатное предоставление пользователям видеопотока в H.264 плата взиматься не будет.