Мультимедиа форматы

Обновлено: 2023-01-31.

Короткая информация о различных мультимедиа форматах и кодеках преимущественно используемых в для хранения музыки и фильмов. Без учёта контейнеров и кодеков для real-time передачи, хранении DVD/BluRay, профессиональной обработки и кинотеатров. В конце и речь про сжатие изображений.

Когда речь заходит о кодеках и их сравнении, то стоит помнить, что огромную роль играет и кодирующий софт: хорошо закодированный XviD может быть ощутимо лучше по качеству чем AVC с YouTube.

Заметка: в экосистеме Apple поддержка свободных форматов практически отсутствует. Там господствуют кодеки и форматы имеющие тьму патентов и принципиально дружащие с DRM. Поэтому, если написано про широкую поддержку: это вряд ли включает экосистему Apple.

В таблицах вопрос "стоит использовать?" нужно учитывать без оглядки на свободность/открытость кодека, чисто технические стороны. Кого волнует свободность (например меня), то стоит любой несвободный кодек сразу считать не стоящим использования.

Аудио без потери качества

ИмяГде встретить?СвободныйСтоит использовать?
FLACВсюдуДаДа
WavPackторрентыДаДа
APEторрентыНетНет
ALACAppleТеперь даНет
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

Аудио с потерей качества

ИмяГде встретить?СвободныйСтоит использовать?
MP2DVD, DVB, DABНедавноНет
MP3музыкаНедавноНет
AC3DVD, BluRay, торрентыНедавноНет
EAC3BluRay?Нет
DTSBluRay?Нет
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
  • Не имеет смысла сейчас
Dolby 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
  • Очень ресурсоёмок даже при декодировании – я у себя FullHD не могу проиграть в real-time
  • Открытый и свободный
  • Широко распространён – де-факто для архивирования

Видео с потерей качества

Отмечу, что принципиально все нижеуказанные кодеки работают схожим образом как и H.261 – все принципы аналогичны: закодировать картинку (I-кадр), разбить картинки на блоки, закодировать "движение" блоков, ссылаясь на другие блоки/кадры. Разница между почти всеми кодеками только в искусственных ограничениях (поддержка больших разрешений, поддержка цветности отличной от YUV 4:2:0, и т.д.) и возможностях задания информации о предсказаниях блоков и их взаимоотношений между собой (на сколько кадров можно сослаться, сколько вариантов "движения" есть у блока, как можно разбить картинку на блоки, какого они размера, и т.д.). Но суть работы аналогична кодеку из 80-х годов. Разве что добавлены гораздо лучшие алгоритмы сжатия энтропии (CABAC), алгоритмы де-блокинга, lapped преобразование (VC-1, Daala).

ИмяГде встретить?СвободныйСтоит использовать?
MPEG-1уже нигдеНедавноНет
MPEG-2DVB, DVDЕщё нетНет
MPEG-4торрентыНетНет
MPEG-4 ASPторрентыНетНет
TheoraторрентыДаНет
AVCвездеНетУже нет
VP8торренты, YouTubeДаУже нет
HEVCзаменяет AVC, UHD BluRayНетДа
VP9торренты, YouTubeДаДа
AV1Netflix, стриминг, 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-х векторов движения в макроблоке
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 PSDVDНедавноНет
MPEG TSDVB, 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

Изображения

ИмяГде встретить?СвободныйLossyLosslessInterlaceСтоит использовать?
GIFВымираетУже даНетДаДаНет
JPEGВездеУже даДаНетДаВряд ли
PNGВездеДаНетДаДаВряд ли
WebPИнтернетДаДаНетНетВряд ли
VP8LИнтернетДаНетДаНетДля screenshot
HEICAppleНетДаНе стоитНетНет
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, только lossless (включая 4:4:4)
  • Лучше всех сжимает screenshot-ы
  • WebP может быть lossy, но иметь lossless альфа-канал
HEIC
  • Создан в 2015
  • Патентован
  • 8k x 4k пикселей – иначе между tile-ами будут артефакты, не держит lossy 4:4:4, до 16-бит на канал, WCG, HDR
  • Нет чересстрочной развёртки
AVIF
  • Создан в 2019
  • Свободный
  • 8k x 4k пикселей – иначе между tile-ами будут артефакты, до 12-бит на канал, WCG, HDR
  • Нет чересстрочной развёртки
  • Очень медленный
JPEG2000
  • Создан в 2000
  • Стал свободным от патентов в 2019
  • 4G x 4G пикселей, до 38-бит на канал, 16k каналов, WCG
  • Природа wavelet-а автоматически даёт progressive декодирование
  • Lossless сжатие фотографий лучше чем у PNG
  • Нет артефактов связанных с DCT природой
JPEG XL
  • Создан в 2021
  • Свободный от отчислений
  • 1G x 1G пикселей, до 32-бит на канал, 8k каналов, WCG, HDR
  • Progressive декодирование
  • На 60% лучше JPEG
  • На 35-40% лучше PNG (но VP8L ещё лучше для screenshot-ов)
  • До 10% лучше lossless JPEG2000 для фотографий
  • С качеством q>40 лучше AVIF
  • Очень быстрый и при декодировании и кодировании, распараллеливается
  • Может без потерь транскодировать JPEG, а также восстановить его с точностью до бита обратно, экономя 20% размера