Короткая информация о различных мультимедиа форматах и кодеках преимущественно используемых в для хранения музыки и фильмов. *Без* учёта контейнеров и кодеков для 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% размера