MPEG-1 — это стандарт сжатия видео и аудио с потерями . Он разработан для сжатия необработанного цифрового видео VHS- качества и аудио CD до примерно 1,5 Мбит/с (коэффициенты сжатия 26:1 и 6:1 соответственно) [2] без чрезмерной потери качества, что делает видео CD , цифровое кабельное / спутниковое телевидение и цифровое аудиовещание (DAB) практичными. [3] [4]
Сегодня MPEG-1 стал самым широко совместимым форматом аудио/видео с потерями в мире и используется во многих продуктах и технологиях. Возможно, самая известная часть стандарта MPEG-1 — это первая версия аудиоформата MP3, который он представил .
Стандарт MPEG-1 опубликован как ISO / IEC 11172 под названием « Информационные технологии — Кодирование движущихся изображений и соответствующего звука для цифровых носителей информации со скоростью до 1,5 Мбит/с» .
Стандарт состоит из следующих пяти частей : [5] [6] [7] [8] [9]
Предшественником MPEG-1 для видеокодирования был стандарт H.261 , разработанный CCITT (теперь известный как ITU-T ). Базовая архитектура, установленная в H.261, была структурой гибридного видеокодирования DCT с компенсацией движения . [10] [11] Он использует макроблоки размером 16×16 с блочной оценкой движения в кодере и компенсацией движения с использованием выбранных кодером векторов движения в декодере, с кодированием остаточной разницы с использованием дискретного косинусного преобразования (DCT) размером 8×8, скалярного квантования и кодов переменной длины (например, кодов Хаффмана ) для энтропийного кодирования . [12] H.261 был первым практическим стандартом видеокодирования, и все его описанные элементы дизайна также использовались в MPEG-1. [13]
Рабочая группа Moving Picture Experts Group (MPEG ) была создана в январе 1988 года по инициативе Хироши Ясуды (Nippon Telegraph and Telephone ) и Леонардо Чиарильоне (CSELT) на основе успешного совместного подхода и технологий сжатия, разработанных Joint Photographic Experts Group и CCITT Experts Group on Telephon ( создатели стандарта сжатия изображений JPEG и стандарта H.261 для видеоконференций соответственно). [ 14] MPEG был сформирован для удовлетворения потребности в стандартных видео- и аудиоформатах и для создания на основе H.261 более высокого качества за счет использования несколько более сложных методов кодирования (например, поддержки более высокой точности для векторов движения). [3] [15] [16]
Разработка стандарта MPEG-1 началась в мае 1988 года. Четырнадцать видео- и четырнадцать аудиокодеков были представлены отдельными компаниями и учреждениями для оценки. Кодеки были тщательно протестированы на вычислительную сложность и субъективное (воспринимаемое человеком) качество при скорости передачи данных 1,5 Мбит/с. Этот конкретный битрейт был выбран для передачи по линиям T-1 / E-1 и в качестве приблизительной скорости передачи данных аудио-CD . [17] Кодеки, которые преуспели в этом тестировании, были использованы в качестве основы для стандарта и далее усовершенствованы, с включением дополнительных функций и других улучшений в процесс. [18]
После 20 встреч всей группы в разных городах по всему миру и 4,5 лет разработки и тестирования окончательный стандарт (для частей 1–3) был одобрен в начале ноября 1992 года и опубликован несколько месяцев спустя. [19] Сообщаемая дата завершения стандарта MPEG-1 сильно различается: в основном полный проект стандарта был выпущен в сентябре 1990 года, и с этого момента вносились только незначительные изменения. [3] Проект стандарта был публично доступен для покупки. [20] Стандарт был завершен на встрече 6 ноября 1992 года. [21] Исследовательская группа Berkeley Plateau Multimedia разработала декодер MPEG-1 в ноябре 1992 года. [22] В июле 1990 года, ещё до того, как был написан первый черновик стандарта MPEG-1, началась работа над вторым стандартом, MPEG-2 , [23] призванным расширить технологию MPEG-1 для обеспечения полного вещательного качества видео (согласно CCIR 601 ) на высоких скоростях передачи данных (3–15 Мбит/с) и поддержки чересстрочного видео. [24] Отчасти из-за схожести двух кодеков стандарт MPEG-2 включает полную обратную совместимость с видео MPEG-1, поэтому любой декодер MPEG-2 может воспроизводить видео MPEG-1. [25]
Примечательно, что стандарт MPEG-1 очень строго определяет поток битов и функцию декодера, но не определяет, как должно выполняться кодирование MPEG-1, хотя эталонная реализация представлена в ISO/IEC-11172-5. [2] Это означает, что эффективность кодирования MPEG-1 может существенно различаться в зависимости от используемого кодировщика, и в целом означает, что новые кодировщики работают значительно лучше своих предшественников. [26] Первые три части (Системы, Видео и Аудио) ISO/IEC 11172 были опубликованы в августе 1993 года. [27]
Из-за своего возраста MPEG-1 больше не защищен никакими существенными патентами и, таким образом, может использоваться без получения лицензии или уплаты каких-либо сборов. [34] [35] [36] [37] [38] В патентной базе данных ISO указан один патент на ISO 11172, US 4,472,747, срок действия которого истек в 2003 году. [39] Почти полный проект стандарта MPEG-1 был публично доступен как ISO CD 11172 [20] к 6 декабря 1991 года. [1] Ни статья Kuro5hin от июля 2008 года «Статус патентов MPEG-1, H.261 и MPEG-2», [40], ни ветка от августа 2008 года в списке рассылки gstreamer-devel [41] не смогли указать ни одного неистекшего патента на MPEG-1 Video и MPEG-1 Audio Layer I/II. В обсуждении в мае 2009 года в списке рассылки whatwg упоминался патент США 5,214,678 как возможно охватывающий MPEG-1 Audio Layer II. [42] Этот патент, поданный в 1990 году и опубликованный в 1993 году, в настоящее время истек. [43]
Полный декодер и кодер MPEG-1 с "аудио Layer III" не мог быть реализован без уплаты роялти, поскольку были компании, которые требовали патентные пошлины за реализацию MPEG-1 Audio Layer III, как обсуждалось в статье MP3 . Все патенты в мире, связанные с MP3, истекли 30 декабря 2017 года, что делает этот формат полностью бесплатным для использования. [44] 23 апреля 2017 года Fraunhofer IIS прекратил взимать плату за программу лицензирования MP3 Technicolor для определенных патентов и программного обеспечения, связанных с MP3. [45]
Следующие корпорации подали заявления в ISO, заявив, что они владеют патентами на формат MPEG-1 Video (ISO/IEC-11172-2), хотя все такие патенты уже истекли. [46]
Часть 1 стандарта MPEG-1 охватывает системы и определена в ISO/IEC-11172-1.
MPEG-1 Systems определяет логическую структуру и методы, используемые для хранения закодированных аудио, видео и других данных в стандартном битовом потоке, а также для поддержания синхронизации между различным содержимым. Этот формат файла специально разработан для хранения на носителях и передачи по каналам связи , которые считаются относительно надежными. Стандарт определяет только ограниченную защиту от ошибок, и небольшие ошибки в битовом потоке могут вызывать заметные дефекты.
Эта структура позже была названа программным потоком MPEG : «Системная конструкция MPEG-1 по сути идентична структуре программного потока MPEG-2». [48] Эта терминология более популярна, точна (отличает ее от транспортного потока MPEG ) и будет использоваться здесь.
Программные потоки (PS) связаны с объединением нескольких пакетированных элементарных потоков (обычно только один аудио- и видео PES) в один поток, обеспечивая одновременную доставку и поддерживая синхронизацию. Структура PS известна как мультиплекс или формат контейнера .
Временные метки представления (PTS) существуют в PS для исправления неизбежного несоответствия между аудио- и видеозначениями SCR (коррекция по времени). Значения PTS с частотой 90 кГц в заголовке PS сообщают декодеру, какие видеозначения SCR соответствуют каким аудиозначениям SCR. [49] PTS определяет, когда отображать часть программы MPEG, а также используется декодером для определения того, когда данные могут быть удалены из буфера . [ 51] Либо видео, либо аудио будут задержаны декодером до тех пор, пока не прибудет соответствующий сегмент другого и не сможет быть декодирован.
Обработка PTS может быть проблематичной. Декодеры должны принимать несколько программных потоков , которые были объединены (последовательно соединены). Это приводит к тому, что значения PTS в середине видео сбрасываются до нуля, а затем снова начинают увеличиваться. Такие несоответствия циклического PTS могут вызывать проблемы синхронизации, которые должны быть специально обработаны декодером.
Декодирование временных меток (DTS), кроме того, требуется из-за B-кадров. При наличии B-кадров в видеопотоке смежные кадры должны кодироваться и декодироваться не по порядку (переупорядоченные кадры). DTS очень похож на PTS, но вместо того, чтобы просто обрабатывать последовательные кадры, он содержит правильные временные метки, чтобы сообщить декодеру, когда декодировать и отображать следующий B-кадр (типы кадров описаны ниже), перед его опорным (P- или I-) кадром. Без B-кадров в видео значения PTS и DTS идентичны. [52]
Для генерации PS мультиплексор будет чередовать (два или более) пакетированных элементарных потока. Это делается для того, чтобы пакеты одновременных потоков могли передаваться по одному и тому же каналу и гарантированно прибывать на декодер в одно и то же время. Это случай мультиплексирования с временным разделением .
Определение того, сколько данных из каждого потока должно быть в каждом чередующемся сегменте (размер чередования), является сложным, но важным требованием. Неправильное чередование приведет к переполнению или недозаполнению буфера, поскольку приемник получает больше одного потока, чем может сохранить (например, аудио), прежде чем он получит достаточно данных для декодирования другого одновременного потока (например, видео). Верификатор буферизации видео MPEG (VBV) помогает определить, может ли мультиплексированный PS быть декодирован устройством с указанной скоростью передачи данных и размером буфера. [53] Это обеспечивает обратную связь для мультиплексора и кодера, так что они могут изменить размер мультиплекса или настроить битрейты по мере необходимости для соответствия.
Часть 2 стандарта MPEG-1 охватывает видео и определена в ISO/IEC-11172-2. На дизайн сильно повлиял H.261 .
MPEG-1 Video использует методы перцептивного сжатия для значительного снижения скорости передачи данных, требуемой видеопотоком. Он уменьшает или полностью отбрасывает информацию на определенных частотах и в определенных областях изображения, которые человеческий глаз имеет ограниченную способность полностью воспринимать. Он также использует временную (с течением времени) и пространственную (по всему изображению) избыточность, распространенную в видео, для достижения лучшего сжатия данных, чем это было бы возможно в противном случае. (См.: Сжатие видео )
Перед кодированием видео в MPEG-1 цветовое пространство преобразуется в Y′CbCr (Y′=Luma, Cb=Chroma Blue, Cr=Chroma Red). Яркость (яркость, разрешение) хранится отдельно от цветности (цвет, оттенок, фаза) и еще больше разделяется на красный и синий компоненты.
Цветность также субдискретизируется до 4:2:0 , что означает, что она уменьшается до половины разрешения по вертикали и половины разрешения по горизонтали, т. е. всего до одной четверти количества образцов, используемых для компонента яркости видео. [2] Такое использование более высокого разрешения для некоторых цветовых компонентов по своей концепции похоже на фильтр шаблона Байера , который обычно используется для датчика захвата изображения в цифровых цветных камерах. Поскольку человеческий глаз гораздо более чувствителен к небольшим изменениям яркости (компонент Y), чем цвета (компоненты Cr и Cb), субдискретизация цветности является очень эффективным способом уменьшения объема видеоданных, которые необходимо сжать. Однако на видео с мелкими деталями (высокой пространственной сложностью ) это может проявляться как артефакты наложения цветности . По сравнению с другими артефактами цифрового сжатия эта проблема, по-видимому, очень редко становится источником раздражения. Из-за субдискретизации видео Y′CbCr 4:2:0 обычно хранится с использованием четных измерений ( делящихся на 2 по горизонтали и вертикали).
Цвет Y′CbCr часто неформально называют YUV для упрощения записи, хотя этот термин правильнее применять к несколько иному цветовому формату. Аналогично, термины яркость и цветность часто используются вместо (более точных) терминов яркость и цветность.
MPEG-1 поддерживает разрешение до 4095×4095 (12 бит) и скорость передачи данных до 100 Мбит/с. [16]
Видео MPEG-1 чаще всего можно увидеть с разрешением Source Input Format (SIF): 352×240, 352×288 или 320×240. Эти относительно низкие разрешения в сочетании с битрейтом менее 1,5 Мбит/с составляют то, что известно как битовый поток с ограниченными параметрами (CPB), позже переименованный в профиль «Низкий уровень» (LL) в MPEG-2. Это минимальные характеристики видео, которые должен был обрабатывать любой декодер , чтобы считаться совместимым с MPEG-1. Это было выбрано для обеспечения хорошего баланса между качеством и производительностью, что позволяло использовать сравнительно недорогое оборудование того времени. [3] [16]
MPEG-1 имеет несколько типов кадров/изображений, которые служат различным целям. Самый важный, но и самый простой, это I-кадр .
«I-кадр» — это аббревиатура от «Intra-frame», так называемый, потому что его можно декодировать независимо от других кадров. Его также можно назвать I-картинками или ключевыми кадрами из-за его функции, несколько схожей с ключевыми кадрами, используемыми в анимации. I-кадры можно считать фактически идентичными базовым изображениям JPEG . [16]
Высокоскоростной поиск по видео MPEG-1 возможен только до ближайшего I-кадра. При нарезке видео невозможно начать воспроизведение сегмента видео до первого I-кадра в сегменте (по крайней мере, без интенсивного перекодирования). По этой причине в приложениях для редактирования используются только видео MPEG I-кадра.
Сжатие только I-кадров очень быстрое, но создает очень большие размеры файлов: в 3 раза (или более) больше, чем обычно закодированное видео MPEG-1, в зависимости от того, насколько сложным во времени является конкретное видео. [3] Видео MPEG-1 только I-кадров очень похоже на видео MJPEG . Настолько, что очень высокоскоростное и теоретически без потерь (в реальности есть ошибки округления) преобразование может быть выполнено из одного формата в другой, при условии соблюдения нескольких ограничений (цветовое пространство и матрица квантования) при создании битового потока. [54]
Длина между I-кадрами известна как размер группы изображений (GOP). MPEG-1 чаще всего использует размер GOP 15–18. т.е. 1 I-кадр на каждые 14–17 не-I-кадров (некоторая комбинация P- и B-кадров). С более интеллектуальными кодерами размер GOP выбирается динамически, вплоть до некоторого предварительно выбранного максимального предела. [16]
Ограничения накладываются на максимальное количество кадров между I-кадрами из-за сложности декодирования, размера буфера декодера, времени восстановления после ошибок данных, возможности поиска и накопления ошибок IDCT в реализациях с низкой точностью, наиболее распространенных в аппаратных декодерах (см.: IEEE -1180).
"P-frame" — это сокращение от "Predicted-frame". Их также могут называть кадрами с прогнозированием вперед или интеркадрами (B-кадры также являются интеркадрами).
P-кадры существуют для улучшения сжатия путем использования временной (с течением времени) избыточности в видео. P-кадры хранят только разницу в изображении с кадром (либо I-кадром, либо P-кадром), непосредственно предшествующим ему (этот опорный кадр также называется опорным кадром ).
Разница между P-кадром и его опорным кадром вычисляется с использованием векторов движения на каждом макроблоке кадра (см. ниже). Такие данные векторов движения будут встроены в P-кадр для использования декодером.
P-кадр может содержать любое количество интракодированных блоков (DCT и квантованных), в дополнение к любым блокам с прямым предсказанием (векторы движения). [55]
Если видео резко меняется от кадра к кадру (например, при монтаже ) , эффективнее закодировать его как I-кадр.
«B-кадр» означает «двунаправленный-кадр» или «двупредиктивный кадр». Их также могут называть кадрами с обратным предсказанием или B-картинками. B-кадры очень похожи на P-кадры, за исключением того, что они могут делать предсказания, используя как предыдущие, так и будущие кадры (т. е. два опорных кадра).
Поэтому проигрывателю необходимо сначала декодировать следующий I- или P-якорный кадр последовательно после B-кадра, прежде чем B-кадр может быть декодирован и отображен. Это означает, что декодирование B-кадров требует больших буферов данных и приводит к увеличению задержки как при декодировании, так и во время кодирования. Это также требует функции отметок времени декодирования (DTS) в контейнере/системном потоке (см. выше). Таким образом, B-кадры долгое время были предметом многочисленных споров, их часто избегают в видео, и иногда они не полностью поддерживаются аппаратными декодерами.
Никакие другие кадры не предсказываются из B-кадра. Из-за этого B-кадр с очень низким битрейтом может быть вставлен, где это необходимо, чтобы помочь контролировать битрейт. Если бы это было сделано с P-кадром, будущие P-кадры были бы предсказаны из него и снизили бы качество всей последовательности. Однако, аналогично, будущий P-кадр все равно должен кодировать все изменения между ним и предыдущим якорным кадром I или P. B-кадры также могут быть полезны в видео, где фон позади объекта раскрывается в течение нескольких кадров, или в затухающих переходах, таких как смена сцен. [3] [16]
B-кадр может содержать любое количество интракодированных блоков и блоков с прямым предсказанием, в дополнение к блокам с обратным предсказанием или двунаправленным предсказанием. [16] [55]
MPEG-1 имеет уникальный тип кадра, не встречающийся в более поздних видеостандартах. «D-кадры» или DC-изображения — это независимо закодированные изображения (внутрикадровые), которые были закодированы только с использованием коэффициентов DC-преобразования (коэффициенты AC удаляются при кодировании D-кадров — см. DCT ниже) и, следовательно, имеют очень низкое качество. D-кадры никогда не ссылаются на I-, P- или B-кадры. D-кадры используются только для быстрого предварительного просмотра видео, например, при поиске по видео на высокой скорости. [3]
При наличии сравнительно высокопроизводительного декодирующего оборудования быстрый предварительный просмотр может быть выполнен путем декодирования I-кадров вместо D-кадров. Это обеспечивает более высокое качество предпросмотра, поскольку I-кадры содержат коэффициенты AC, а также коэффициенты DC. Если кодер может предположить, что в декодерах доступна возможность быстрого декодирования I-кадров, он может сэкономить биты, не отправляя D-кадры (тем самым улучшая сжатие видеоконтента). По этой причине D-кадры редко используются в кодировании видео MPEG-1, и функция D-кадра не была включена ни в один из более поздних стандартов кодирования видео.
MPEG-1 работает с видео в серии блоков 8×8 для квантования. Однако, чтобы уменьшить битрейт, необходимый для векторов движения, и поскольку цветность (цвет) подвыбирается в 4 раза, каждая пара блоков цветности (красный и синий) соответствует 4 различным блокам яркости. То есть для 4 блоков яркости размером 8×8 есть один блок Cb размером 8×8 и один блок Cr размером 8×8. Этот набор из 6 блоков с разрешением изображения 16×16 обрабатывается вместе и называется макроблоком .
Все эти блоки 8x8 независимо друг от друга подвергаются DCT-преобразованию и квантованию.
Макроблок — наименьшая независимая единица (цветного) видео. Векторы движения (см. ниже) работают исключительно на уровне макроблока.
Если высота или ширина видео не кратны 16, для заполнения изображения все равно необходимо кодировать и декодировать полные строки и полные столбцы макроблоков (хотя дополнительные декодированные пиксели не отображаются).
Чтобы уменьшить количество временной избыточности в видео, обновляются только те блоки, которые изменяются (до максимального размера GOP). Это известно как условное пополнение. Однако само по себе это не очень эффективно. Движение объектов и/или камеры может привести к необходимости обновления больших частей кадра, даже если изменилось только положение ранее закодированных объектов. С помощью оценки движения кодер может компенсировать это движение и удалить большой объем избыточной информации.
Кодер сравнивает текущий кадр с соседними частями видео из опорного кадра (предыдущий I- или P-кадр) в ромбовидной форме до (специфичного для кодера) предопределенного предела радиуса из области текущего макроблока. Если совпадение найдено, то только направление и расстояние (т. е. вектор движения ) от предыдущей области видео до текущего макроблока необходимо закодировать в межкадровый (P- или B-кадр). Обратный процесс, выполняемый декодером для реконструкции изображения, называется компенсацией движения .
Однако предсказанный макроблок редко идеально соответствует текущему изображению. Различия между предполагаемой областью соответствия и реальным кадром/макроблоком называются ошибкой предсказания. Чем больше величина ошибки предсказания, тем больше данных необходимо дополнительно кодировать в кадре. Для эффективного сжатия видео очень важно, чтобы кодер был способен эффективно и точно выполнять оценку движения.
Векторы движения записывают расстояние между двумя областями на экране на основе количества пикселей (также называемых pels). Видео MPEG-1 использует точность вектора движения (MV) в половину одного пикселя или half-pel. Чем выше точность MV, тем точнее, вероятно, будет совпадение и тем эффективнее сжатие. Однако существуют компромиссы для более высокой точности. Более высокая точность MV приводит к использованию большего объема данных для представления MV, поскольку большие числа должны храниться в кадре для каждого отдельного MV, увеличению сложности кодирования, поскольку для кодера и декодера требуются более высокие уровни интерполяции на макроблоке, и убывающей отдаче (минимальному выигрышу) при более высокой точности MV. Точность в полпикселя была выбрана в качестве идеального компромисса для этого момента времени. (См.: qpel )
Поскольку соседние макроблоки, скорее всего, будут иметь очень похожие векторы движения, эта избыточная информация может быть сжата довольно эффективно, если будет сохранена в кодировке DPCM . Только (меньшая) величина разницы между MV для каждого макроблока должна быть сохранена в конечном потоке битов.
P-кадры имеют один вектор движения на макроблок относительно предыдущего опорного кадра. B-кадры, однако, могут использовать два вектора движения: один из предыдущего опорного кадра и один из будущего опорного кадра. [55]
Частичные макроблоки и черные границы/полосы, закодированные в видео, которые не попадают точно на границу макроблока, вызывают хаос в прогнозировании движения. Информация о заполнителях/границах блока не позволяет макроблоку точно совпадать с любой другой областью видео, и поэтому для каждого из нескольких десятков частичных макроблоков вдоль границы экрана необходимо кодировать значительно большую информацию об ошибке прогнозирования. Кодирование и квантование DCT (см. ниже) также не так эффективны, когда в блоке большой/резкий контраст изображения.
Еще более серьезная проблема существует с макроблоками, которые содержат значительный, случайный, краевой шум , где изображение переходит в (обычно) черный цвет. Все вышеперечисленные проблемы также применимы к краевому шуму. Кроме того, добавленную случайность просто невозможно существенно сжать. Все эти эффекты существенно снизят качество (или увеличат битрейт) видео.
Каждый блок 8×8 кодируется путем применения прямого дискретного косинусного преобразования (FDCT) и затем процесса квантования. Процесс FDCT (сам по себе) теоретически не имеет потерь и может быть обращен путем применения обратного DCT ( IDCT ) для воспроизведения исходных значений (при отсутствии каких-либо ошибок квантования и округления). В действительности существуют некоторые (иногда большие) ошибки округления, вносимые как квантованием в кодере (как описано в следующем разделе), так и ошибкой аппроксимации IDCT в декодере. Минимально допустимая точность аппроксимации IDCT декодера определяется стандартом ISO/IEC 23002-1. (До 2006 года она была определена стандартом IEEE 1180-1990.)
Процесс FDCT преобразует блок 8×8 несжатых значений пикселей (яркости или цветового различия) в индексированный массив 8×8 значений частотных коэффициентов . Одним из них является (статистически высокодисперсный) "коэффициент DC", который представляет собой среднее значение всего блока 8×8. Остальные 63 коэффициента являются статистически меньшими "коэффициентами AC", которые имеют положительные или отрицательные значения, каждый из которых представляет собой синусоидальные отклонения от значения плоского блока, представленного коэффициентом DC.
Пример закодированного блока FDCT размером 8×8:
Поскольку значение коэффициента DC статистически коррелируется от одного блока к другому, оно сжимается с использованием кодирования DPCM . Только (меньшая) величина разницы между каждым значением DC и значением коэффициента DC в блоке слева от него должна быть представлена в конечном потоке битов.
Кроме того, преобразование частоты, выполняемое путем применения ДКП, обеспечивает статистическую функцию декорреляции для эффективной концентрации сигнала в меньшем количестве значений с высокой амплитудой перед применением квантования (см. ниже).
Квантование , по сути, представляет собой процесс снижения точности сигнала путем его деления на больший размер шага и округления до целого значения (т. е. нахождения ближайшего кратного и отбрасывания остатка).
Квантизатор уровня кадра — это число от 0 до 31 (хотя кодеры обычно опускают/отключают некоторые крайние значения), которое определяет, сколько информации будет удалено из данного кадра. Квантизатор уровня кадра обычно либо динамически выбирается кодером для поддержания определенного указанного пользователем битрейта, либо (гораздо реже) напрямую указывается пользователем.
«Матрица квантования» — это строка из 64 чисел (в диапазоне от 0 до 255), которая сообщает кодеру, насколько относительно важен или неважен каждый фрагмент визуальной информации. Каждое число в матрице соответствует определенному частотному компоненту видеоизображения.
Пример матрицы квантования:
Квантование выполняется путем взятия каждого из 64 значений частоты блока DCT, деления их на квантователь уровня кадра, а затем деления их на соответствующие им значения в матрице квантования. Наконец, результат округляется в меньшую сторону. Это значительно уменьшает или полностью устраняет информацию в некоторых частотных компонентах изображения. Обычно высокочастотная информация визуально менее важна, и поэтому высокие частоты квантуются гораздо сильнее ( резко уменьшены). MPEG-1 фактически использует две отдельные матрицы квантования, одну для внутриблоковых (I-блоки) и одну для межблочных (P- и B-блоки), поэтому квантование различных типов блоков может выполняться независимо, и, следовательно, более эффективно. [3]
Этот процесс квантования обычно сводит значительное количество коэффициентов переменного тока к нулю (это называется разреженными данными), которые затем можно более эффективно сжать с помощью энтропийного кодирования (сжатие без потерь) на следующем этапе.
Пример квантованного блока DCT:
Квантование устраняет большой объем данных и является основным этапом обработки с потерями при кодировании видео MPEG-1. Это также основной источник большинства артефактов сжатия видео MPEG-1 , таких как блочность , цветные полосы , шум , звон , обесцвечивание и т. д. Это происходит, когда видео кодируется с недостаточным битрейтом, и поэтому кодер вынужден использовать квантизаторы высокого уровня кадров ( сильное квантование ) на протяжении большей части видео.
Несколько шагов в кодировании видео MPEG-1 являются без потерь, то есть они будут обращены при декодировании, чтобы произвести точно такие же (исходные) значения. Поскольку эти шаги сжатия данных без потерь не добавляют шум или иным образом не изменяют содержимое (в отличие от квантования), его иногда называют кодированием без шума . [47] Поскольку сжатие без потерь направлено на удаление как можно большего количества избыточности, в области теории информации оно известно как энтропийное кодирование .
Коэффициенты квантованных блоков DCT стремятся к нулю в нижнем правом углу. Максимальное сжатие может быть достигнуто путем зигзагообразного сканирования блока DCT, начиная с верхнего левого угла, и использования методов кодирования длины серии.
Коэффициенты DC и векторы движения кодируются DPCM .
Кодирование длины серии (RLE) — это простой метод сжатия повторений. Последовательную строку символов, независимо от ее длины, можно заменить несколькими байтами, отметив повторяющееся значение и количество раз. Например, если кто-то скажет «пять девяток», вы поймете, что он имеет в виду число: 99999.
RLE особенно эффективен после квантования, поскольку значительное количество коэффициентов AC теперь равно нулю (называется разреженными данными) и может быть представлено всего парой байтов. Это хранится в специальной 2- мерной таблице Хаффмана, которая кодирует длину серии и символ окончания серии.
Кодирование Хаффмана — очень популярный и относительно простой метод энтропийного кодирования, используемый в видео MPEG-1 для уменьшения размера данных. Данные анализируются для поиска часто повторяющихся строк. Затем эти строки помещаются в специальную таблицу, причем наиболее часто повторяющимся данным назначается самый короткий код. Это позволяет сохранять данные настолько маленькими, насколько это возможно при такой форме сжатия. [47] После того, как таблица построена, эти строки в данных заменяются их (гораздо меньшими) кодами, которые ссылаются на соответствующую запись в таблице. Декодер просто обращает этот процесс, чтобы получить исходные данные.
Это последний шаг в процессе кодирования видео, поэтому результат кодирования Хаффмана известен как «битовый поток» видео MPEG-1.
I-кадры хранят полную информацию о кадре внутри кадра и поэтому подходят для произвольного доступа. P-кадры обеспечивают сжатие с использованием векторов движения относительно предыдущего кадра (I или P). B-кадры обеспечивают максимальное сжатие, но требуют как предыдущего, так и следующего кадра для вычисления. Поэтому обработка B-кадров требует большего буфера на стороне декодирования. Конфигурация группы изображений (GOP) должна быть выбрана на основе этих факторов. Последовательности только I-кадров дают наименьшее сжатие, но полезны для произвольного доступа, FF/FR и возможности редактирования. Последовательности I- и P-кадров дают умеренное сжатие, но добавляют определенную степень произвольного доступа, функциональности FF/FR. Последовательности I-, P- и B-кадров дают очень высокое сжатие, но также значительно увеличивают задержку кодирования/декодирования. Поэтому такие конфигурации не подходят для приложений видеотелефонии или видеоконференций.
Типичная скорость передачи данных I-кадра составляет 1 бит на пиксель, тогда как для P-кадра она составляет 0,1 бит на пиксель, а для B-кадра — 0,015 бит на пиксель. [56]
Часть 3 стандарта MPEG-1 охватывает аудио и определена в ISO/IEC-11172-3.
MPEG-1 Audio использует психоакустику для значительного снижения скорости передачи данных, требуемой аудиопотоком. Он уменьшает или полностью отбрасывает определенные части звука, которые, как он выводит, человеческое ухо не может услышать , либо потому, что они находятся на частотах, где ухо имеет ограниченную чувствительность, либо маскируются другими (обычно более громкими) звуками. [57]
Режимы кодирования каналов:
MPEG-1 Audio делится на 3 уровня. Каждый более высокий уровень более сложен в вычислительном отношении и, как правило, более эффективен при более низких битрейтах, чем предыдущий. [16] Уровни являются полуобратно совместимыми, поскольку более высокие уровни повторно используют технологии, реализованные более низкими уровнями. «Полный» декодер уровня II также может воспроизводить звук уровня I, но не звук уровня III, хотя не все проигрыватели более высокого уровня являются «полными». [57]
MPEG-1 Audio Layer I — это упрощенная версия MPEG-1 Audio Layer II. [18] Layer I использует меньший размер кадра в 384 сэмпла для очень низкой задержки и более высокого разрешения. [26] Это выгодно для таких приложений, как телеконференции, студийный монтаж и т. д. Он имеет меньшую сложность, чем Layer II, что облегчает кодирование в реальном времени на доступном оборудовании примерно в 1990 году . [47]
В свое время уровень I получил ограниченное распространение и, в частности, использовался на прекратившей свое существование цифровой компактной кассете Philips с битрейтом 384 кбит/с. [2] В связи со значительным повышением производительности цифровой обработки с момента его появления уровень I быстро стал ненужным и устаревшим.
Аудиофайлы уровня I обычно имеют расширение «.mp1» или иногда «.m1a».
MPEG-1 Audio Layer II (первая версия MP2, часто неофициально называемая MUSICAM) [57] — это аудиоформат с потерями, разработанный для обеспечения высокого качества стереозвука со скоростью около 192 кбит/с. [59] Декодирование звука MP2 вычислительно проще по сравнению с MP3, AAC и т. д.
MPEG-1 Audio Layer II был создан на основе аудиокодека MUSICAM ( адаптированное к шаблону маскирования универсальное интегрированное кодирование и мультиплексирование поддиапазонов ), разработанного Центром общественных исследований в области телевидения и телекоммуникаций (CCETT), Philips и Институтом радиотехники (IRT/CNET) [16] [18] [60] в рамках общеевропейской межправительственной инициативы по исследованиям и разработкам EUREKA 147 для развития цифрового аудиовещания.
Большинство ключевых особенностей MPEG-1 Audio были напрямую унаследованы от MUSICAM, включая банк фильтров, обработку во временной области, размеры аудиокадров и т. д. Однако были сделаны улучшения, и фактический алгоритм MUSICAM не был использован в окончательном стандарте MPEG-1 Audio Layer II. Широко распространенное использование термина MUSICAM для обозначения Layer II совершенно неверно и не рекомендуется как по техническим, так и по юридическим причинам. [57]
MP2 — это кодер временной области. Он использует 32-полосный полифазный фильтр с низкой задержкой для частотно-временного отображения; имеет перекрывающиеся диапазоны (т. е. полифазный) для предотвращения наложения спектров. [61] Психоакустическая модель основана на принципах слуховой маскировки , одновременных маскирующих эффектов и абсолютного порога слышимости (ATH). Размер кадра слоя II фиксирован и составляет 1152 выборки (коэффициенты).
Временная область относится к тому, как анализ и квантование выполняются на коротких, дискретных образцах/фрагментах аудиосигнала. Это обеспечивает низкую задержку, поскольку только небольшое количество образцов анализируется перед кодированием, в отличие от кодирования в частотной области (например, MP3), которое должно анализировать во много раз больше образцов, прежде чем оно сможет решить, как преобразовать и вывести закодированный звук. Это также обеспечивает более высокую производительность на сложных, случайных и переходных импульсах (таких как ударные инструменты и аплодисменты), предлагая избежание артефактов, таких как опережающее эхо.
32-полосный фильтр-банк возвращает 32 амплитудных коэффициента, по одному для каждой равновеликой полосы/сегмента частоты аудио, что составляет около 700 Гц в ширину (в зависимости от частоты дискретизации аудио). Затем кодер использует психоакустическую модель для определения того, какие поддиапазоны содержат менее важную аудиоинформацию, и, таким образом, где квантование будет неслышимым или, по крайней мере, гораздо менее заметным. [47]
Психоакустическая модель применяется с использованием 1024-точечного быстрого преобразования Фурье (БПФ). Из 1152 выборок на кадр, 64 выборки в верхней и нижней части частотного диапазона игнорируются для этого анализа. Они, предположительно, недостаточно значимы, чтобы изменить результат. Психоакустическая модель использует эмпирически определенную модель маскирования, чтобы определить, какие поддиапазоны вносят больший вклад в порог маскирования , и сколько шума квантования каждый может содержать, не будучи воспринятым. Любые звуки ниже абсолютного порога слышимости (ATH) полностью отбрасываются. Затем доступные биты назначаются каждому поддиапазону соответственно. [57] [61]
Обычно поддиапазоны менее важны, если они содержат более тихие звуки (меньший коэффициент), чем соседний (то есть схожей частоты) поддиапазон с более громкими звуками (больший коэффициент). Кроме того, «шумовые» компоненты обычно имеют более значительный маскирующий эффект, чем «тональные» компоненты. [60]
Менее значимые поддиапазоны уменьшаются в точности квантованием. Это в основном включает в себя сжатие частотного диапазона (амплитуды коэффициента), т.е. повышение уровня шума. Затем вычисляется коэффициент усиления, который декодер использует для повторного расширения каждого поддиапазона до надлежащего частотного диапазона. [62] [63]
Layer II может также опционально использовать кодирование интенсивности стерео , форму совместного стерео. Это означает, что частоты выше 6 кГц обоих каналов объединяются/микшируются в один единственный (моно) канал, но информация «бокового канала» об относительной интенсивности (громкости, амплитуде) каждого канала сохраняется и кодируется в битовый поток отдельно. При воспроизведении один канал воспроизводится через левый и правый динамики, причем информация об интенсивности применяется к каждому каналу, чтобы создать иллюзию стереозвука. [47] [60] Этот перцептивный трюк известен как «стерео-иррелевантность». Это может позволить дополнительно снизить битрейт аудио без значительной ощутимой потери точности, но обычно не используется с более высокими битрейтами, поскольку не обеспечивает очень высококачественного (прозрачного) звука. [47] [61] [64] [65]
Субъективное тестирование звука экспертами в самых критических условиях, когда-либо реализованных, показало, что MP2 обеспечивает прозрачное сжатие звука со скоростью 256 кбит/с для 16-битного 44,1 кГц CD-аудио с использованием самой ранней эталонной реализации (более поздние кодеры, по-видимому, должны работать еще лучше). [2] [60] [61] [66] Этот (приблизительный) коэффициент сжатия 1:6 для CD-аудио особенно впечатляет, поскольку он довольно близок к предполагаемому верхнему пределу перцептивной энтропии , чуть более 1:8. [67] [68] Достижение гораздо более высокого уровня сжатия просто невозможно без отбрасывания некоторой воспринимаемой информации.
MP2 остается предпочтительным стандартом кодирования звука с потерями из-за его особенно высоких характеристик кодирования звука на важном аудиоматериале, таком как кастаньеты, симфонический оркестр, мужские и женские голоса и особенно сложные и высокоэнергетические переходные процессы (импульсы), такие как ударные звуки: треугольник, глокеншпиль и аплодисменты публики. [26] Более поздние испытания показали, что MPEG Multichannel (на основе MP2), несмотря на то, что он скомпрометирован худшим матричным режимом (для обеспечения обратной совместимости) [2] [61], дает лишь немного более низкие показатели, чем гораздо более современные аудиокодеки, такие как Dolby Digital (AC-3) и Advanced Audio Coding (AAC) (в основном в пределах погрешности — и существенно выше в некоторых случаях, таких как аплодисменты публики). [69] [70] Это одна из причин, по которой аудио MP2 продолжает широко использоваться. Однако проверочные тесты MPEG-2 AAC Stereo пришли к совершенно иному выводу, показав, что AAC обеспечивает превосходную производительность по сравнению с MP2 при вдвое меньшем битрейте. [71] Причина этого несоответствия как с более ранними, так и с более поздними тестами не ясна, но, как ни странно, в последнем тесте заметно отсутствие образца аплодисментов.
Аудиофайлы уровня II обычно имеют расширение «.mp2» или иногда «.m2a».
MPEG-1 Audio Layer III (первая версия MP3 ) — это аудиоформат с потерями, разработанный для обеспечения приемлемого качества на скорости около 64 кбит/с для монофонического звука по одноканальным ( BRI ) каналам ISDN и 128 кбит/с для стереозвука.
MPEG-1 Audio Layer III был получен из кодека Adaptive Spectral Perceptual Entropy Coding (ASPEC), разработанного Fraunhofer в рамках общеевропейской межправительственной инициативы по исследованиям и разработкам EUREKA 147 для развития цифрового аудиовещания. ASPEC был адаптирован для соответствия модели Layer II (размер кадра, банк фильтров, FFT и т. д.), чтобы стать Layer III. [18]
ASPEC сам по себе был основан на множественном адаптивном спектральном аудиокодировании (MSC) Э. Ф. Шредера, оптимальном кодировании в частотной области (OCF) докторской диссертации Карлхайнца Бранденбурга в Университете Эрлангена-Нюрнберга , перцептивном преобразовании кодирования (PXFM) Дж. Д. Джонстона в AT&T Bell Labs и преобразовании кодирования аудиосигналов Й. Маё и Ж. Пети в Институте радиотехники (IRT/CNET). [72]
MP3 — это кодер преобразования звука в частотной области . Несмотря на то, что он использует некоторые функции нижнего уровня, MP3 существенно отличается от MP2.
MP3 работает на 1152 сэмплах, как и MP2, но требует анализа нескольких кадров, прежде чем обработка в частотной области (MDCT) и квантование могут быть эффективными. Он выводит переменное количество сэмплов, используя битовый буфер для включения этого кодирования с переменной скоростью передачи битов (VBR), сохраняя при этом размер выходных кадров 1152 сэмпла. Это приводит к значительно более длительной задержке перед выводом, из-за чего MP3 считается непригодным для студийных приложений, где требуется редактирование или другая обработка. [61]
MP3 не использует преимущества 32-полосного полифазного банка фильтров, вместо этого он просто использует 18-точечное преобразование MDCT на каждом выходе для разделения данных на 576 частотных компонентов и обработки их в частотной области. [60] Эта дополнительная детализация позволяет MP3 иметь гораздо более тонкую психоакустическую модель и более тщательно применять соответствующее квантование к каждой полосе, обеспечивая гораздо лучшую производительность при низком битрейте.
Обработка в частотной области также накладывает некоторые ограничения, вызывая в 12 или 36 раз худшее временное разрешение, чем у Layer II. Это вызывает артефакты квантования из-за переходных звуков, таких как ударные события и другие высокочастотные события, которые распространяются на большее окно. Это приводит к слышимому размытию и опережающему эху . [61] MP3 использует процедуры обнаружения опережающего эха и кодирование VBR, что позволяет ему временно увеличивать битрейт во время сложных отрывков, пытаясь уменьшить этот эффект. Он также может переключаться между обычным окном квантования в 36 сэмплов и вместо этого использовать 3 коротких окна по 12 сэмплов, чтобы уменьшить временную (временную) длину артефактов квантования. [61] И все же при выборе довольно малого размера окна, чтобы сделать временной отклик MP3 достаточно адекватным, чтобы избежать самых серьезных артефактов, MP3 становится гораздо менее эффективным при сжатии частотной области стационарных тональных компонентов.
Вынужденное использование гибридной модели временной области (банк фильтров)/частотной области (MDCT) для соответствия с уровнем II просто тратит время обработки и снижает качество, вводя артефакты наложения спектров. MP3 имеет этап отмены наложения спектров специально для маскировки этой проблемы, но вместо этого производит энергию частотной области, которая должна быть закодирована в аудио. Это выдвигается на верхнюю часть частотного диапазона, где у большинства людей ограничен слух, в надежде, что искажения, которые оно вызывает, будут менее слышимыми.
1024-точечное БПФ слоя II не охватывает полностью все образцы и исключит несколько целых поддиапазонов MP3, где должны быть определены факторы квантования. Вместо этого MP3 использует два прохода анализа БПФ для спектральной оценки, чтобы вычислить глобальные и индивидуальные пороги маскирования. Это позволяет ему охватить все 1152 образца. Из двух он использует глобальный уровень порога маскирования из более критического прохода с самым сложным аудио.
В дополнение к интенсивности кодированного совместного стерео Layer II, MP3 может использовать среднее/боковое (среднее/боковое, м/с, MS, матричное) совместное стерео. При использовании среднего/бокового стерео определенные диапазоны частот обоих каналов объединяются в один (средний, средний, L+R) моноканал, в то время как разница звука между левым и правым каналами сохраняется как отдельный (боковой, LR) канал. В отличие от интенсивности стерео, этот процесс не отбрасывает никакую аудиоинформацию. Однако в сочетании с квантованием он может преувеличивать артефакты.
Если разница между левым и правым каналами невелика, то и боковой канал будет невелик, что обеспечит экономию битрейта до 50% и связанное с этим улучшение качества. Если разница между левым и правым каналами велика, то может быть предпочтительнее стандартное (дискретное, левое/правое) стереокодирование, поскольку совместное стерео mid/side не даст никаких преимуществ. MP3-кодер может переключаться между m/s stereo и full stereo покадрово. [60] [65] [73]
В отличие от уровней I и II, MP3 использует кодирование Хаффмана переменной длины (после перцептивного) для дальнейшего снижения битрейта без дальнейшей потери качества. [57] [61]
Более мелкозернистое и избирательное квантование MP3 действительно оказывается заметно лучше MP2 при более низких битрейтах. Он способен обеспечить почти эквивалентное качество звука Layer II при битрейте на 15% ниже (приблизительно). [70] [71] 128 кбит/с считается «золотой серединой» для MP3; это означает, что он обеспечивает в целом приемлемое качество стереозвука для большинства музыкальных произведений, и есть уменьшающиеся улучшения качества при дальнейшем увеличении битрейта. MP3 также считается демонстрирующим артефакты, которые менее раздражают, чем Layer II, когда оба используются при битрейте, который слишком низок, чтобы обеспечить возможное точное воспроизведение.
Аудиофайлы уровня III используют расширение «.mp3».
Стандарт MPEG-2 включает несколько расширений MPEG-1 Audio. [61] Они известны как MPEG-2 BC — обратно совместимые с MPEG-1 Audio. [74] [75] [76] [77] MPEG-2 Audio определен в ISO/IEC 13818-3.
Эти частоты дискретизации составляют ровно половину от изначально определенных для MPEG-1 Audio. Они были введены для поддержания более высокого качества звука при кодировании аудио с более низкими битрейтами. [25] Еще более низкие битрейты были введены, поскольку тесты показали, что MPEG-1 Audio может обеспечить более высокое качество, чем любые существующие ( около 1994 г. ) аудиокодеки с очень низким битрейтом (т. е. речь ). [78]
Часть 4 стандарта MPEG-1 охватывает тестирование на соответствие и определена в ISO/IEC-11172-4.
Соответствие: Процедуры проверки соответствия.
Предоставляет два набора руководств и эталонных битовых потоков для тестирования соответствия аудио- и видеодекодеров MPEG-1, а также битовых потоков, создаваемых кодером. [16] [23]
Часть 5 стандарта MPEG-1 включает в себя справочное программное обеспечение и определена в ISO/IEC TR 11172–5.
Моделирование: эталонное программное обеспечение.
Справочный код C для кодирования и декодирования аудио и видео, а также мультиплексирования и демультиплексирования. [16] [23]
Сюда входит код аудиокодера ISO Dist10 , на котором изначально были основаны LAME и TooLAME .
.mpg — одно из многих расширений файлов для сжатия аудио и видео MPEG-1 или MPEG-2 . Видео MPEG-1 Part 2 в настоящее время встречается редко, и это расширение обычно относится к программному потоку MPEG (определенному в MPEG-1 и MPEG-2) или транспортному потоку MPEG (определенному в MPEG-2). Существуют также другие суффиксы, такие как .m2ts, указывающие точный контейнер, в данном случае MPEG-2 TS, но это не имеет большого значения для носителей MPEG-1.
.mp3 — наиболее распространенное расширение для файлов, содержащих MP3- аудио (обычно MPEG-1 Audio, иногда MPEG-2 Audio). Файл MP3 обычно представляет собой неконтейнированный поток необработанного звука; обычный способ тегирования файлов MP3 — это запись данных в «мусорные» сегменты каждого кадра, которые сохраняют медиаинформацию, но отбрасываются проигрывателем. Во многих отношениях это похоже на то, как тегируются необработанные файлы .AAC (но в настоящее время это поддерживается меньше, например, iTunes ).
Обратите внимание, что, хотя это применимо, .mpg обычно не добавляет необработанный AAC или AAC в контейнерах MPEG-2 Part 7. Расширение .aac обычно обозначает эти аудиофайлы.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )В. Хорошо, тогда как мне получить документы, такие как проект MPEG I? О. MPEG - это проект стандарта ISO. Его [
sic
] точное название - ISO CD 11172. [...] Вы можете заказать его в вашем национальном органе по стандартизации (например, ANSI в США) или купить у таких компаний, как OMNICOM [...]
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )Поиск 11172
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка ){{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка )