Відеокодек

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Відеоко́дек — прилад або програмне забезпечення, що виконує функції кодування та декодування цифрового відео потоку. Кодування, як правило, полягає в стисненні з втратами інформації. Історично, відео інформація зберігалася в аналоговому вигляді на магнітних касетах. Але коли на ринок вийшли компакт диски, з'явилась потреба зберігати та обробляти відео в цифровому вигляді.

Аудіо та відео інформація вимагає спеціалізованих методів стиснення. Інженери та математики спробували застосувати кілька методів для розв'язання цієї проблеми.

Існує складний баланс між якістю отриманого відео, кількістю інформації, необхідної для його відтворення (відома як біт-рейт, англ. bitrate), складністю алгоритмів кодування та декодування, стійкістю до втрат даних та помилок, зручністю для редагування, довільного доступу, якістю алгоритмів, затримкою в каналах зв'язку та іншими факторами.


Принцип роботи найпростішого кодека

Спершу розглянемо кодування статичного зображення (або, одиночного кадру). Кожен кадр відеопотоку складається з точок (пікселів), що утворюють матрицю (растр). Кодек може відстежувати схожі масиви точок з однаковими атрибутами (наприклад, синій колір фону на зображенні неба) і, замість того, щоб запам'ятовувати інформацію про кожну з таких точок (яскравість і колір) у наступних кадрах окремо, він записує тільки першу (ключову) точку і лічильник з кількістю повторень цієї точки до моменту зміни її кольору. Тобто замість опису, наприклад, 1000 крапок, достатньо(в певних випадках) описати всього 1 точку + лічильник повторення. Це найпростіший з методів стиснення.

В JPEG для кадру проводиться поблочної дискретне косинусное перетворення з наступним кодуванням з використанням алгоритму Хаффмана або арифметичного кодування.

Для побудови динамічного зображення (відеоряду) використовуються різні типи кадрів - крім I-кадрів (які також називаються ключовими (англ. keyframes) або «опорними») які можуть містити тільки незалежно стислі макроблоки, додані P-кадри («різницеві» кадри) можуть містити як незалежно стислі макроблоки, так і макроблоки з посиланням на інший кадр.

Якістю тут можна управляти, задаючи величину, таку, що якщо відмінність між точками менше, то вони вважаються однаковими.

Більш просунуті формати стиснення враховують, крім вищезгаданої технології, ще й принципи руху масивів точок у зображенні, сегментування картинки на «квадратики» з різною якістю стиснення, застосування послідовності кадрів, кодованих по-різному і показаних у певній послідовності. Найновіші кодеки враховують психофізичні властивості сприйняття відео людським оком і мозком, що дозволяє ще сильніше зменшувати розмір даних без «видимої втрати якості». Також, алгоритми використовує схожість сусідніх кадрів у відеоряді.

стандарти та кодеки[ред. | ред. код]

Кодеки без втрат[ред. | ред. код]

Кодеки з втратами[ред. | ред. код]

  • MPEG-1 Part 2 (Типове застосування: Video-CD (VCD))
  • MPEG-2 Part 2 (Типову застосування: SuperVideo-CD (SVCD), MVCD, KVCD, DVD, DVB, HDTV)
  • MPEG-4 Part 2 (Часто використовується разом із AVI-файлами створеними в DivX або XviD)
  • MPEG-4 Part 10 та AVC та H.264 (Типове застосування: HD-DVD, DVB-S2, HDTV, iTunes)
  • Windows Media Video та VC-1 (Типове застосування: Internet Streaming)
  • RealVideo (Типове застосування: Internet Streaming)
  • Sorenson (Типове застосування: раніше у відеопотоках Quicktime- та Flash)
  • Theora (позиціонується як відкритий конкурент MPEG-4 та аналогів)
  • VP6 (Типове застосування: у відеопотоках Flash до Flash версії 8)

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]