Короткая информация о различных мультимедиа форматах и кодеках
преимущественно используемых в для хранения музыки и фильмов.
*Без* учёта контейнеров и кодеков для real-time передачи,
хранении DVD/BluRay, профессиональной обработки и кинотеатров.
В конце и речь про сжатие изображений.
Когда речь заходит о кодеках и их сравнении, то стоит помнить, что
огромную роль играет и кодирующий софт: хорошо закодированный XviD может
быть ощутимо лучше по качеству чем AVC с YouTube.
*Заметка*: в экосистеме Apple поддержка свободных форматов
практически отсутствует. Там господствуют кодеки и форматы имеющие тьму
патентов и принципиально дружащие с DRM. Поэтому, если написано про
широкую поддержку: это вряд ли включает экосистему Apple.
В таблицах вопрос "стоит использовать?" нужно учитывать без оглядки на
свободность/открытость кодека, чисто технические стороны. Кого волнует
свободность (например меня), то стоит любой несвободный кодек сразу
считать не стоящим использования.
Аудио без потери качества
=========================
Имя | Где встретить? | Свободный | Стоит использовать?
FLAC | Всюду | Да | Да
WavPack | торренты | Да | Да
APE | торренты | Нет | Нет
ALAC | Apple | Теперь да | Нет
=> FLAC
Создан в 2001
Открытый и свободный
Широкая поддержка
Сжимает на 30-50% рок и метал
до 655 KHz, до 32 бит fixed-point
Позволяет встраивать изображения, CUE, Vorbis Comment
=> WavPack
Создан в 1998
Открытый и свободный
Особенность: может быть как lossy, так и lossless. Lossless
информацию можно добавить к lossy части
Сжимает немного лучше FLAC
Поддержка не так широка как у FLAC
до 16.7 MHz, до 32 бит fixed-point/floating-point, 256 каналов
Позволяет встраивать CUE, ID3
=> Monkey's Audio (APE)
*Не свободный*
Сжимает немного лучше чем FLAC/WavPack
Декодирование требует примерно столько же затрат что и
кодирование -- ресурсоёмок
до 655 KHz, до 24 бит fixed-point
=> ALAC
Создан в 2004
Apple не может использовать кодеки без тьмы патентов и без поддержки
DRM, поэтому изобрели свой аналог FLAC
До 2011 был несвободным
Технических преимуществ относительно FLAC не имеет
до 384 KHz, до 8 каналов, до 32 бит fixed-point
*Не имеет смысла*, так как есть FLAC/WavPack
Аудио с потерей качества
========================
Имя | Где встретить? | Свободный | Стоит использовать?
MP2 | DVD, DVB, DAB | Недавно | Нет
MP3 | музыка | Недавно | Нет
AC3 | DVD, BluRay, торренты | Недавно | Нет
EAC3 | BluRay | ? | Нет
DTS | BluRay | ? | Нет
AAC | везде | *Нет* | Да
Vorbis | торренты, YouTube | Да | Уже нет
Opus | торренты, YouTube | Да | Да
=> MPEG audio layer 2 (MP2)
Стандарт создан в 1993
Широко распространён: DVD, радио/теле-вещание используют его
до 48 KHz, штатно до 2 каналов (может 5.1), 32-384 Kbps
*Не имеет* смысла сейчас
=> MPEG audio layer 3 (MP3)
Стандарт создан в 1993
Широко распространён
Немного лучше по качеству чем MP2
Может встраивать ID3 метаинформацию
до 48 KHz, штатно до 2 каналов (может 5.1), 32-320 Kbps
*Не имеет* смысла сейчас
=> AC-3 (A/52) (Dolby Digital)
Стандарт создан в 1991
Патентован
Приемлемое качество, имеет только на битрейтах >192Kbps
Применяется в BluRay, DVD
до 48 KHz, до 5.1 каналов, до 640 Kbps
*Не имеет* смысла сейчас
=> EAC-3 (Dolby Digital Plus)
Стандарт создан в 2008
Расширение AC3
до 48 KHz, до 15 каналов, до 6144 Kbps
=> DTS (DCA (DTS Coherent Acoustics))
Создан в 1990-х
В отличии от MP2/MP3/AC3/etc основан на ADPCM сжатии, что
крайне легковесно, но сжимает в два (или более) раза хуже
Применяется в BluRay, опционально DVD
=> AAC
Создан в 1997
*Патентован*
Везде лучше по качеству чем MP3
до 192 KHz, до 48 каналов, 8-529 Kbps
=> Vorbis
Создан в 2000
Открытый и свободный
Везде лучше по качеству чем MP3
По качеству схож, зачастую лучше, чем AAC
до 192 KHz, до 255 каналов, 45-500 Kbps
Широкая поддержка
Может встраивать Vorbis Comment метаинформацию
Лучший выбор, если нет возможности использовать Opus
=> Opus
Создан в 2012
Открытый и свободный
Везде лучше по качеству всех остальных
(субъективно 96 Kbps схож с 128 Kbps Vorbis)
Является комбайном из CELT и SILK алгоритмов.
SILK используется в Skype для передачи речи на низких битрейтах.
Подходит идеально хорошо и для передачи речи с низкой задержкой и
для музыки с фильмами
до 48 KHz, до 255 каналов, 6-510 Kbps
Видео без потери качества
=========================
Обычное сжатие
На ZFS ФС с LZ4 я могут половину места сэкономить храня сырое
несжатое видео. Это стоит иметь в виду, особенно когда нужно иметь
промежуточный формат.
=> YUV4MPEG2
Не предоставляет сжатие, но часто используется как
промежуточный формат передачи видео в YCbCr 4:2:0/4:2:2/4:4:4
Имеет очень простые plaintext заголовки и легко парсится в C
=> HuffYUV
Создан в 2000
Открытый и свободный
Быстро жмёт
ffvhuff
Немного изменённый HuffYUV, дающий 20% лучше сжатие
=> FFV1
Создан в 2003
Жмёт лучше HuffYUV
Довольно ресурсоёмок даже при декодировании
Открытый и свободный
Широко распространён -- де-факто для архивирования
Видео с потерей качества
========================
Отмечу, что принципиально все нижеуказанные кодеки работают схожим
образом как и H.261 -- все принципы аналогичны: закодировать картинку
(I-кадр), разбить картинки на блоки, закодировать "движение" блоков,
ссылаясь на другие блоки/кадры. Разница между почти всеми кодеками
только в искусственных ограничениях (поддержка больших разрешений,
поддержка цветности отличной от YUV 4:2:0, и т.д.) и возможностях
задания информации о предсказаниях блоков и их взаимоотношений между
собой (на сколько кадров можно сослаться, сколько вариантов "движения"
есть у блока, как можно разбить картинку на блоки, какого они размера,
и т.д.). Но суть работы аналогична кодеку из 80-х годов. Разве что
добавлены гораздо лучшие алгоритмы сжатия энтропии (CABAC), алгоритмы
де-блокинга, lapped преобразование (VC-1, Daala).
Имя | Где встретить? | Свободный | Стоит использовать?
MPEG-1 | уже нигде | Недавно | Нет
MPEG-2 | DVB, DVD | Ещё нет | Нет
MPEG-4 | торренты | Нет | Нет
MPEG-4 ASP | торренты | Нет | Нет
Theora | торренты | Да | Нет
AVC | везде | *Нет* | Уже нет
VP8 | торренты, YouTube | Да | Уже нет
HEVC | заменяет AVC, UHD BluRay | *Нет* | Да
VP9 | торренты, YouTube | Да | Да
AV1 | Netflix, стриминг, YouTube | Да | Да
VVC | ? | *Нет* | ?
=> H.261
Создан в 1988
Практически все основы видеосжатия зародились в нём и
современные кодеки принципиально не сильно отличаются
Он тут для исторической справки
Техособенности: 16x16 блоки, DCT 8x8, P-кадры
=> MPEG-1
Создан в 1993
Широчайшая поддержка
Как правило кодируется разрешение не выше 352:288, 1.5Mbps
*Не имеет* смысла использовать
Техособенности (относительно H.261): полупиксельный вектор движения, B-кадры
=> MPEG-2 (H.262)
Создан в 1995
*Патентован*
Широчайшая поддержка: используется в телевещании и DVD
Хорошее качество только на высоких битрейтах
Как правило, до 10 Mbps
Любой MPEG-2 декодер может проигрывать MPEG-1
Не требователен к процессору, но вряд ли имеет смысл использовать сейчас
Техособенности (относительно MPEG-1): 16x8 блоки, чересстрочное видео
=> H.263
Создан в 1996
Ориентирован на низкие битрейты
Широчайшая поддержка: использовался в видеоконференциях,
online-видео (Sorenson/Flash), видеокамерах сотовых телефонов (3GP)
Не требователен к процессору, но вряд ли имеет смысл
использовать сейчас
=> MPEG-4 part 2 (DivX)
Создан в 1998
*Патентован*
DivX это одна из проприетарных программ, но некорректно часто
использующаяся как синоним
В разы более требователен к процессору
Значительно лучше сжимает чем MPEG-2 на низких битрейтах:
в неплохом качестве можно уместить три фильма на одном DVD
Неплохое качество даже на низких битрейтах меньше 1Mbps
До сих пор огромное количество фильмов кодируют в него
Базовый профиль (DivX старый) почти идентичен H.263
Техособенности (относительно MPEG-2): 8x8 блоки, де-блокинг, до 4-х
векторов движения в макроблоке, global motion compensation
MPEG-4 part 2 ASP (XviD)
ASP это один из профилей MPEG-4 part 2 добавляющий множество технологий
Заметно лучше качество чем у MPEG-4 part 2
XviD это свободная программа реализующая ASP
Техособенности (относительно MPEG-4):
четвертьпиксельные вектора движения, B-кадры, чересстрочное видео
=> Theora
Создан в 2004
Открытый и свободный
Схож по ресурсам и качеству с MPEG-4 part 2
Техособенности:
8x8 DCT, нет B-кадров, чересстрочной развёртки, только 8-бит на компонент
=> MPEG-4 part 10 (AVC) (H.264)
Создан в 2003
*Патентован*
На данный момент это основной из распространённых кодеков для
качественного видео
В разы требовательнее к процессору даже при декодировании:
FullHD требует под 80% моего Intel Core i5 ядра.
Кодирование одного фильма занимает много часов
3.5 Mbps MPEG-2 поток с аналогичным качеством занимает 1.5 Mbps в AVC
Есть lossless режим
Техособенности (относительно MPEG-4 ASP):
полностью целочисленный
16x16->4x4 блоки (варьируемый размер)
ссылка на два опорных кадра
CABAC/CAVLC сжатие энтропии
до 32-х векторов движения в макроблоке
широкая поддержка цветности (4:4:4, 14-бит на компонент, и т.д.)
8x8->4x4 DCT
8 направлений движения
=> VP8
Создан в 2008
Открытый и свободный
Можно считать свободным аналогом AVC (не для всех задач)
Поддерживает только прогрессивную развёртку, 4:2:0, 8-бит на
компонент
Его алгоритм кодирования кадра используется как основа lossy WebP
Техособенности:
четвертьпиксельные вектора движения
ссылка до трёх опорных кадров
де-блокинг
16x16/8x8/4x4 блоки
=> MPEG-H part 2 (HEVC) (H.265)
Создан в 2013
*Патентован*
На 25-50% эффективнее AVC
На низких битрейтах особенно заметно лучшее качество
Во много раз требовательнее к процессору чем AVC. FullHD без
активных сцен у меня не часто может быть проигран в real-time.
Кодирование фильма занимает дни
Есть lossless режим
Техособенности (относительно MPEG-4 AVC):
64x64->4x4 блоки
33 направления движения
только CABAC
=> VP9
Создан в 2013
Открытый и свободный
Можно считать свободным аналогом HEVC
В отличии от VP8, есть lossless режим
Отличное решение на сегодняшний день, если есть мощности
Техособенности (относительно VP8): 64x64->4x4 блоки, 32x32/16x16 DCT
=> AV1
Создан в 2018
Открытый и свободный
За основу был взят VP9 (->VP10),
Daala (CfL, CDEF, кодирование энтропии) и Thor (CfL, CDEF)
На 30% эффективнее HEVC/VP9
Ощутимо требовательнее к процессору чем HEVC/VP9
Техособенности (относительно VP9):
предсказание цветности по яркости (Chroma-from-Luma)
улучшенный де-блокинг (Constrained Directional Enhancement Filter)
не бинарное интервальное кодирование энтропии
более разнообразное T-образное партиционирование
128x128->4x4 суперблоки
внутренняя работа идёт в 10/12-бит
ссылка до семи опорных кадров
56 направлений движения
global motion
работа с зернистостью (film grain)
SVC (scalable video coding) и S-кадры
Контейнеры
==========
Имя | Где встретить? | Свободный | Стоит использовать?
AVI | торренты | Да | Нет
MPEG PS | DVD | Недавно | Нет
MPEG TS | DVB, BluRay | Недавно | Нет
Ogg | торренты | Да | Нет
MP4 | везде | ? | Нет
Matroska, WebM | торренты, YouTube | Да | Да
=> AVI
Создан в 1992
Широко поддерживается
Множество ограничений, препятствующих использованию множества
кодеков: AC3/MP3-VBR, Vorbis/Opus, AAC. Нет возможности сохранить aspect ratio
Не поддерживает streaming
В принципе, для простых задач, если кодеки позволяют, подходит
и сегодня. Но Matroska будет иметь меньший overhead
=> MPEG PS
Создан в 1993
Широко поддерживается: DVD и HD-DVD хранят именно в нём
Не имеет сейчас смысла для хранения
=> MPEG TS
Создан в 1995
Несёт MPEG PS потоки
Имеет обнаружение и коррекцию ошибок, синхронизацию, маленькие
пакеты: поэтому у него существенный overhead
Широко поддерживается: DVB, ATSC, BluRay
BluRay имеет не стандартный MPEG TS, а с 32-бит timecode-ом
Не имеет смысла для хранения
=> Ogg
Разработка начата ещё в 1993
Открытый и свободный
Идеально заточен для потоковой передачи. Лучший в этой задаче,
в том числе с маленьким overhead-ом и возможностью потери пакетов
Требует mapping между кадрами кодеков и страницами Ogg,
поэтому на данный момент кодеков для Ogg не много: Speex, Vorbis,
Opus, FLAC, Theora, Daala, Dirac
Это контейнер по умолчанию штатно используемый для Vorbis,
Opus, Theora
Не имеет индекса для поиска: используется метод проб и ошибок
=> MPEG-4 part 14 (MP4)
Создан в 2001
*Патентован*
Идентичен QuickTime формату
Поддерживает только несвободные кодеки
Менее широко поддерживается чем Matroska
=> Matroska
Создан в 2002
Открытый и свободный
Грубо говоря, можно использовать любой кодек
Может нести самую различную метаинформацию, прикреплять любые
файлы, изображения
Поддерживает потоковую передачу
Имеет малый overhead
Поддерживает деление на части (chapters), трэки, может
объединять и нести несколько мультимедиа потоков
Лучший формат (Ogg будет иметь больший overhead)
=> WebM
Создан в 2010
Открытый и свободный
Это просто подмножество Matroska (любой кто умеет Matroska,
умеет и WebM), ограничивающее выбор видеокодека до VP8/VP9/AV1, а
аудиокодека до Vorbis/Opus
Если кодирование идёт в эти свободные кодеки, то имеет смысл
создавать WebM контейнер, вместо полноценной более сложной Matroska
Изображения
===========
Имя | Где встретить? | Свободный | Lossy | Lossless | Interlace | Стоит использовать?
GIF | Вымирает | Уже да | Нет | Да | Да | Нет
JPEG | Везде | Уже да | Да | Нет | Да | Вряд ли
PNG | Везде | Да | Нет | Да | Да | Вряд ли
WebP | Интернет | Да | Да | Нет | Нет | Вряд ли
VP8L | Интернет | Да | Нет | Да | Нет | Вряд ли
HEIC | Apple | Нет | Да | Не стоит | Нет | Нет
AVIF | Интернет | Нет | Да | Не стоит | Нет | Нет
JPEG2000 | Вне Интернета | Уже да | Да | Да | Да | Если нет JPEG XL
JPEG XL | ? | Да | Да | Да | Да | Да
=> GIF
Создан в 1987
Стал свободным от патентов в 2004
Использует 256-цветов палитру, 1-бит альфа-канал
Чересстрочная развёртка
=> JPEG
Создан в 1992
Стал свободным от патентов ~2010
64k x 64k пикселей, 4:4:4/4:2:2/4:2:0, 8-бит на канал
Не поддерживает альфа-канал
=> PNG
Создан в 1996
Свободный
2G x 2G пикселей, до 16-бит на канал, WCG
Прогрессивная развёртка
=> WebP (VP8)
Создан в 2010
Свободный
16k x 16k пикселей, только 4:2:0, до 8-бит на канал
Является просто VP8-кадром
Нет прогрессивной развёртки
Быстрый декодер
WebP lossless (VP8L)
Всё аналогично WebP, только 4:4:4 RGBA 8-бит lossless
=> HEIC
Создан в 2015
Патентован
8k x 4k пикселей -- иначе между tile-ами будут артефакты,
не держит lossy 4:4:4, до 12-бит на канал, WCG, HDR
Нет прогрессивной развёртки
=> AVIF
Создан в 2019
Использует патентованный HEIF контейнер
8k x 4k пикселей -- иначе между tile-ами будут артефакты,
до 12-бит на канал, WCG, HDR
Нет прогрессивной развёртки
*Очень* медленный
=> JPEG2000
Создан в 2000
Стал свободным от патентов в 2019
4G x 4G пикселей, до 38-бит на канал, 16k каналов, WCG
Природа wavelet-а автоматически даёт progressive декодирование
Lossless сжатие фотографий лучше чем у PNG
Нет артефактов связанных с DCT природой
=> JPEG XL
Создан в 2021
Свободный от отчислений
Размер стандарта/документации почти на порядок меньше по
размеру чем у AVIF например -- существенно проще
1G x 1G пикселей, до 32-бит на канал, 8k каналов, WCG, HDR
Progressive декодирование
На 60% лучше JPEG
На 35-40% лучше PNG (но VP8L ещё лучше для screenshot-ов)
До 10% лучше lossless JPEG2000 для фотографий
С качеством q>40 лучше AVIF
*Очень* быстрый и при декодировании и кодировании,
распараллеливается
Может без потерь транскодировать JPEG, а также восстановить
его с точностью до бита обратно, экономя 20% размера