Формат кодирования видео [a] (или иногда формат сжатия видео ) — это формат представления контента цифрового видео , например, в файле данных или потоке битов . Обычно он использует стандартизированный алгоритм сжатия видео , чаще всего основанный на кодировании с дискретным косинусным преобразованием (DCT) и компенсации движения . Конкретное программное обеспечение, встроенное ПО или аппаратная реализация, способная выполнять сжатие или декомпрессию в определенном формате кодирования видео, называется видеокодеком .
Некоторые форматы видеокодирования документируются подробным техническим документом спецификации, известным как спецификация видеокодирования . Некоторые такие спецификации написаны и одобрены организациями по стандартизации как технические стандарты и, таким образом, известны как стандарт видеокодирования . Существуют фактические стандарты и формальные стандарты.
Видеоконтент, закодированный с использованием определенного формата кодирования видео, обычно связывается с аудиопотоком (закодированным с использованием формата кодирования аудио ) внутри формата контейнера мультимедиа, такого как AVI , MP4 , FLV , RealMedia или Matroska . Таким образом, у пользователя обычно нет файла H.264 , но вместо этого есть видеофайл , который является контейнером MP4 видео, закодированного в H.264, обычно вместе с аудио, закодированным в AAC . Форматы контейнеров мультимедиа могут содержать один из нескольких различных форматов кодирования видео; например, формат контейнера MP4 может содержать форматы кодирования видео, такие как MPEG-2 Part 2 или H.264. Другим примером является первоначальная спецификация для типа файла WebM , которая определяет формат контейнера (Matroska), а также какой именно формат сжатия видео ( VP8 ) и аудио ( Vorbis ) находится внутри контейнера Matroska, хотя Matroska может содержать видео VP9 , а поддержка аудио Opus была позже добавлена в спецификацию WebM .
Формат — это план размещения данных, создаваемых или потребляемых кодеком .
Хотя форматы видеокодирования, такие как H.264, иногда называют кодеками , существует четкое концептуальное различие между спецификацией и ее реализациями. Форматы видеокодирования описываются в спецификациях, а программное обеспечение , встроенное ПО или оборудование для кодирования/декодирования данных в заданном формате видеокодирования из/в несжатое видео являются реализациями этих спецификаций. По аналогии, формат видеокодирования H.264 (спецификация) относится к кодеку OpenH264 (конкретная реализация) так же, как язык программирования C (спецификация) относится к компилятору GCC (конкретная реализация). Обратите внимание, что для каждой спецификации (например, H.264 ) может быть много кодеков, реализующих эту спецификацию (например, x264 , OpenH264, продукты и реализации H.264/MPEG-4 AVC ).
Это различие не последовательно отражено терминологически в литературе. Спецификация H.264 называет H.261 , H.262 , H.263 и H.264 стандартами видеокодирования и не содержит слова кодек . [2] Alliance for Open Media четко различает формат видеокодирования AV1 и сопутствующий кодек, который они разрабатывают, но называет сам формат видеокодирования спецификацией видеокодека . [3] Спецификация VP9 называет сам формат видеокодирования VP9 кодеком . [4]
В качестве примера смешения, страницы Chromium [5] и Mozilla [6] , перечисляющие их видеоформаты, поддерживают оба формата видеокодирования, такие как кодеки H.264 . В качестве другого примера, в объявлении Cisco о бесплатном видеокодеке, пресс-релиз называет формат видеокодирования H.264 кодеком ( «выбор общего видеокодека»), но вскоре после этого называет реализацию Cisco кодера/декодера H.264 кодеком ( «open-source our H.264 codec»). [7]
Формат кодирования видео не диктует все алгоритмы, используемые кодеком , реализующим формат. Например, большая часть того, как обычно работает сжатие видео, заключается в поиске сходств между видеокадрами (сопоставление блоков) и последующем достижении сжатия путем копирования ранее закодированных похожих подизображений (таких как макроблоки ) и добавления небольших различий при необходимости. Поиск оптимальных комбинаций таких предикторов и различий является NP-трудной задачей [8] , что означает, что практически невозможно найти оптимальное решение. Хотя формат кодирования видео должен поддерживать такое сжатие между кадрами в формате битового потока, не требуя без необходимости определенных алгоритмов для поиска таких соответствий блоков и других этапов кодирования, кодеки, реализующие спецификацию кодирования видео, имеют некоторую свободу для оптимизации и инноваций в выборе алгоритмов. Например, в разделе 0.5 спецификации H.264 говорится, что алгоритмы кодирования не являются частью спецификации. [2] Свободный выбор алгоритма также допускает различные компромиссы между сложностью пространства и времени для одного и того же формата кодирования видео, поэтому прямая трансляция может использовать быстрый, но неэффективный по объему алгоритм, а одноразовое кодирование DVD для последующего массового производства может заменить длительное время кодирования на эффективное по объему кодирование.
Концепция сжатия аналогового видео восходит к 1929 году, когда RD Kell в Великобритании предложил концепцию передачи только тех частей сцены, которые изменялись от кадра к кадру. Концепция сжатия цифрового видео восходит к 1952 году, когда исследователи Bell Labs BM Oliver и CW Harrison предложили использовать дифференциальную импульсно-кодовую модуляцию (DPCM) в видеокодировании. В 1959 году концепция компенсации межкадрового движения была предложена исследователями NHK Y. Taki, M. Hatori и S. Tanaka, которые предложили предиктивное межкадровое видеокодирование во временном измерении . [9] В 1967 году исследователи Лондонского университета AH Robinson и C. Cherry предложили кодирование длин серий (RLE), схему сжатия без потерь , для уменьшения полосы пропускания передачи аналоговых телевизионных сигналов. [10]
Самые ранние алгоритмы цифрового кодирования видео были либо для несжатого видео , либо использовали сжатие без потерь , оба метода неэффективны и непрактичны для цифрового кодирования видео. [11] [12] Цифровое видео было представлено в 1970-х годах, [11] изначально используя несжатую импульсно-кодовую модуляцию (PCM), требующую высоких битрейтов около 45–200 Мбит/с для видео стандартной четкости (SD), [11] [12] что было в 2000 раз больше, чем пропускная способность телекоммуникаций (до 100 кбит/с ), доступная до 1990-х годов. [12] Аналогично, несжатое видео высокой четкости (HD) 1080p требует битрейтов, превышающих 1 Гбит/с , что значительно больше, чем пропускная способность, доступная в 2000-х годах. [13]
Практическое сжатие видео возникло с развитием кодирования с компенсацией движения DCT (MC DCT), [12] [11], также называемого блочной компенсацией движения (BMC) [9] или компенсацией движения DCT. Это гибридный алгоритм кодирования, [9] который объединяет два ключевых метода сжатия данных : кодирование с дискретным косинусным преобразованием (DCT) [12] [11] в пространственном измерении и предиктивную компенсацию движения во временном измерении . [9]
Кодирование DCT — это метод кодирования с преобразованием сжатия блоков с потерями , который был впервые предложен Насиром Ахмедом , который изначально предназначался для сжатия изображений , когда он работал в Университете штата Канзас в 1972 году. Затем он был разработан в практический алгоритм сжатия изображений Ахмедом совместно с Т. Натараджаном и К. Р. Рао в Техасском университете в 1973 году и опубликован в 1974 году. [14] [15] [16]
Другим ключевым достижением стало гибридное кодирование с компенсацией движения. [9] В 1974 году Али Хабиби из Университета Южной Калифорнии представил гибридное кодирование, [17] [18] [19], которое объединяет предиктивное кодирование с кодированием с преобразованием. [9] [20] Он исследовал несколько методов кодирования с преобразованием, включая DCT, преобразование Адамара , преобразование Фурье , наклонное преобразование и преобразование Карунена-Лоэва . [17] Однако его алгоритм изначально был ограничен внутрикадровым кодированием в пространственном измерении. В 1975 году Джон А. Розе и Гунер С. Робинсон расширили алгоритм гибридного кодирования Хабиби на временное измерение, используя кодирование с преобразованием в пространственном измерении и предиктивное кодирование во временном измерении, разработав межкадровое гибридное кодирование с компенсацией движения. [9] [21] Для кодирования пространственного преобразования они экспериментировали с различными преобразованиями, включая DCT и быстрое преобразование Фурье (FFT), разрабатывая для них межкадровые гибридные кодеры, и обнаружили, что DCT является наиболее эффективным из-за его уменьшенной сложности, способным сжимать данные изображения до 0,25 бит на пиксель для сцены видеотелефона с качеством изображения, сопоставимым с типичным внутрикадровым кодером, требующим 2 бита на пиксель. [22] [21]
DCT был применен к кодированию видео Вен-Сюн Ченом [23], который разработал быстрый алгоритм DCT совместно с CH Smith и SC Fralick в 1977 году [24] [25] и основал Compression Labs для коммерциализации технологии DCT. [23] В 1979 году Анил К. Джейн и Джасвант Р. Джейн продолжили разработку DCT-компрессии видео с компенсацией движения. [26] [9] Это привело к тому, что Чен разработал практический алгоритм сжатия видео, названный DCT с компенсацией движения или адаптивным кодированием сцены, в 1981 году [9] DCT с компенсацией движения позже стало стандартной техникой кодирования для сжатия видео с конца 1980-х годов. [11] [27]
Первым стандартом цифрового видеокодирования был H.120 , разработанный CCITT (теперь ITU-T) в 1984 году. [28] H.120 не был пригоден для использования на практике, так как его производительность была слишком низкой. [28] H.120 использовал кодирование DPCM с компенсацией движения, [9] алгоритм сжатия без потерь, который был неэффективен для видеокодирования. [11] В конце 1980-х годов ряд компаний начали экспериментировать с кодированием с дискретным косинусным преобразованием (DCT), гораздо более эффективной формой сжатия для видеокодирования. CCITT получил 14 предложений по форматам сжатия видео на основе DCT, в отличие от одного предложения, основанного на сжатии с векторным квантованием (VQ). Стандарт H.261 был разработан на основе сжатия DCT с компенсацией движения. [11] [27] H.261 был первым практическим стандартом кодирования видео, [28] и использует патенты, лицензированные рядом компаний, включая Hitachi , PictureTel , NTT , BT и Toshiba , среди прочих. [29] Начиная с H.261, сжатие DCT с компенсацией движения было принято всеми основными стандартами кодирования видео (включая форматы H.26x и MPEG ), которые последовали за ним. [11] [27]
MPEG-1 , разработанный Moving Picture Experts Group (MPEG), появился в 1991 году и был разработан для сжатия видео VHS -качества. [28] В 1994 году ему на смену пришел MPEG-2 / H.262 , [28] который был разработан с использованием патентов, лицензированных рядом компаний, в первую очередь Sony , Thomson и Mitsubishi Electric . [30] MPEG-2 стал стандартным видеоформатом для DVD и цифрового телевидения SD . [28] Его алгоритм DCT с компенсацией движения смог достичь коэффициента сжатия до 100:1, что позволило разработать такие цифровые медиатехнологии, как видео по запросу (VOD) [12] и телевидение высокой четкости (HDTV). [31] В 1999 году за ним последовал MPEG-4 / H.263 , который стал крупным скачком вперед для технологии сжатия видео. [28] Он использует патенты, лицензированные у ряда компаний, в первую очередь Mitsubishi, Hitachi и Panasonic . [32]
Наиболее широко используемый формат видеокодирования по состоянию на 2019 год [обновлять]— H.264/MPEG-4 AVC . [33] Он был разработан в 2003 году и использует патенты, лицензированные рядом организаций, в первую очередь Panasonic, Godo Kaisha IP Bridge и LG Electronics . [34] В отличие от стандартного DCT, используемого его предшественниками, AVC использует целочисленный DCT . [23] [35] H.264 — один из стандартов видеокодирования для дисков Blu-ray ; все проигрыватели дисков Blu-ray должны иметь возможность декодировать H.264. Он также широко используется потоковыми интернет-источниками, такими как видео с YouTube , Netflix , Vimeo и iTunes Store , веб-программным обеспечением, таким как Adobe Flash Player и Microsoft Silverlight , а также различными трансляциями HDTV по наземным ( стандарты ATSC , ISDB-T , DVB-T или DVB-T2 ), кабельным ( DVB-C ) и спутниковым ( DVB-S2 ) каналам. [36]
Основной проблемой для многих форматов видеокодирования были патенты , делающие их использование дорогим или потенциально рискованным патентным иском из-за подводных патентов . Мотивацией многих недавно разработанных форматов видеокодирования, таких как Theora , VP8 и VP9 , было создание ( свободного ) стандарта видеокодирования, охватываемого только патентами без уплаты роялти. [37] Патентный статус также был основным предметом спора при выборе того, какие видеоформаты основные веб-браузеры будут поддерживать внутри тега HTML video .
Текущим форматом кодирования видео является HEVC (H.265), представленный в 2013 году. AVC использует целочисленное DCT с размерами блоков 4x4 и 8x8, а HEVC использует целочисленные преобразования DCT и DST с различными размерами блоков от 4x4 до 32x32. [38] HEVC сильно запатентован, в основном Samsung Electronics , GE , NTT и JVCKenwood . [39] Ему бросает вызов формат AV1 , предназначенный для свободной лицензии. По состоянию на 2019 год [обновлять]AVC является наиболее часто используемым форматом для записи, сжатия и распространения видеоконтента, его используют 91% разработчиков видео, за ним следует HEVC, который используют 43% разработчиков. [33]
Потребительское видео обычно сжимается с использованием видеокодеков с потерями , так как это приводит к значительно меньшим файлам, чем сжатие без потерь . Некоторые форматы видеокодирования разработаны специально для сжатия с потерями или без потерь, а некоторые форматы видеокодирования, такие как Dirac и H.264, поддерживают оба варианта. [49]
Несжатые видеоформаты , такие как Clean HDMI , являются формой видео без потерь, используемой в некоторых обстоятельствах, например, при отправке видео на дисплей через соединение HDMI . Некоторые высококлассные камеры также могут снимать видео напрямую в этом формате.
Межкадровое сжатие усложняет редактирование закодированной видеопоследовательности. [50] Одним из подклассов относительно простых форматов видеокодирования являются внутрикадровые видеоформаты, такие как DV , в которых каждый кадр видеопотока сжимается независимо, не ссылаясь на другие кадры в потоке, и не делается никаких попыток использовать корреляции между последовательными изображениями с течением времени для лучшего сжатия. Одним из примеров является Motion JPEG , который представляет собой просто последовательность индивидуально сжатых изображений JPEG . Этот подход является быстрым и простым, за счет того, что закодированное видео намного больше, чем формат видеокодирования, поддерживающий межкадровое кодирование.
Поскольку межкадровое сжатие копирует данные из одного кадра в другой, если исходный кадр просто вырезан (или потерян при передаче), последующие кадры не могут быть восстановлены должным образом. Выполнение вырезок в видео с внутрикадровым сжатием при редактировании видео почти так же просто, как редактирование несжатого видео: нужно найти начало и конец каждого кадра и просто побитово копировать каждый кадр, который нужно сохранить, и отбрасывать ненужные кадры. Другое отличие между внутрикадровым и межкадровым сжатием заключается в том, что в системах с внутрикадровым сжатием каждый кадр использует одинаковый объем данных. В большинстве систем с межкадровым сжатием определенным кадрам (например, I-кадрам в MPEG-2 ) не разрешено копировать данные из других кадров, поэтому для них требуется гораздо больше данных, чем для других кадров поблизости. [51]
Можно создать компьютерный видеоредактор, который выявляет проблемы, возникающие при редактировании кадров I, когда другие кадры в них нуждаются. Это позволило использовать для редактирования новые форматы, такие как HDV . Однако этот процесс требует гораздо большей вычислительной мощности, чем редактирование внутрикадрового сжатого видео с тем же качеством изображения. Однако такое сжатие не очень эффективно для использования с любым аудиоформатом. [52]
Формат кодирования видео может определять необязательные ограничения для кодированного видео, называемые профилями и уровнями. Можно иметь декодер, который поддерживает только декодирование подмножества профилей и уровней заданного видеоформата, например, чтобы сделать программу/оборудование декодера меньше, проще или быстрее. [53]
Профиль ограничивает , какие методы кодирования разрешены. Например, формат H.264 включает профили baseline , main и high (и другие). В то время как P-срезы (которые могут быть предсказаны на основе предыдущих срезов) поддерживаются во всех профилях, B-срезы (которые могут быть предсказаны на основе как предыдущих, так и последующих срезов) поддерживаются в main и high профилях, но не в baseline . [54]
Уровень — это ограничение на такие параметры, как максимальное разрешение и скорость передачи данных. [ 54]
произошел с введением концепции гибридного преобразования/DPCM-кодирования (Хабиби, 1974).
H.263 похож на H.261, но сложнее. В настоящее время это наиболее широко используемый международный стандарт сжатия видео для видеотелефонии на телефонных линиях ISDN (Integrated Services Digital Network).