DivX Основы создания видео на компьютере


Mpeg - кодеки


Автор: Евгений Сучёв
Дата: 29.08.2003

Все кодеки, предназначенные для сжатия видео можно разделить на два типа: с устранением пространственной избыточности и устранением временной избыточности. К первому типу можно отнести M-JPEG кодеки. Ко второму типу можно отнести все Mpeg кодеки. Суть первого типа кодеков сводится к сжатию каждого кадра, по JPEG алгоритму. При этом каждый кадр сжимается независимо от другого.

Второй тип кодеков производит сравнение двух соседних кадров. При точном совпадении кадров, считается, что записывать второй кадр не нужно. При каких-то незначительных изменениях, производится запись только изменившейся части, остальная часть забирается из предыдущего кадра. По этому алгоритму работают все Mpeg кодеки и их клоны: XVID, DivX, WMV, Quick Time…

В связи с тем, что Mpeg кодеки (и их клоны) работают по одному и тому же алгоритму, все они подвержены одним и тем же искажениям. Можно вывести закономерности, влияющие на качество результирующего видео. По материалам авторитетного сайта www.doom9.org и моим собственным исследованиям, я вывел некоторые конкретные факторы, влияющие на качество сжатого видео кодеками второго типа.

Я насчитал их 6 штук:

  1. Разрешение
  2. Битрейт
  3. B-frames
  4. Фильтры
  5. Низкий уровень движения в фильме
  6. Темное кино

1. Разрешение (или размер картинки) при сжатии видео имеет не маловажную роль. Нам кажется, что увеличение разрешения видео несёт только благо, но… При увеличении разрешения требуется больше поток для каждого кадра. Если приводить это к пикселям в кадре, то при разрешении 320*240 получается 76800 пикселей в кадре. То же самое изображение при 384*288 будет иметь 110592 пикселей в кадре. Имеем увеличение в 1,44 раза, что должно повлечь увеличение битрейта кодека (для получения картинки того же качества) во столько же раз. Как видим, минимальное изменение разрешения картинки, влечёт за собой значительные изменения потока. Для обобщения понятия о приемлемости качества, обычно вводят такое понятие, как b/(s*f) (b-битрейт, измеряется в бит/секунда; s-количество пикселей в одном кадре, высчитывается умножением высоты на ширину; f - число кадров в секунду) и оно не должно быть ниже определённого порога. По большому счёту, это поток, приходящийся на один пиксель. Для определения этого параметра я пользуюсь пакетом GordianKnot. Он предназначен для обработки видео и вычисляет этот параметр автоматически. При снижении этого параметра ниже 0,19 сигнализирует, что сжатие неприемлемо высоко.




- Начало -  - Назад -  - Вперед -