Huffyuv (Huffyuv)

Перейти к навигации Перейти к поиску
Диалог настройки кодека Huffyuv в VfW

Huffyuv (или HuffYUV) — кодек, предназначенный для сжатия видео без потерь. Создан Ben Rudiak-Gould, в целях замены несжатого YCbCr как формата видео захвата. Несмотря на «YUV» в названии, он использует цветовое пространство не YUV, а YCbCr. «Без потерь» означает, что результат декомпрессии бит-в-бит идентичен исходному потоку перед компрессией (при условии, что не проводилось преобразование цветового пространства). Алгоритм Huffyuv предсказывает каждый пиксель кадра и затем кодирует ошибку по алгоритму Хаффмана.

Реализации

[править | править код]

Оригинальная реализация была написана для Windows Ben Rudiak-Gould и издана на условиях GPL. Реализация считается очень быстрой, даёт пропускную способность сжатия до 38 МБ в секунду на Celeron 416 МГц. Оригинальный Huffyuv не обновлялся с 2002 г.

Более современный форк кодека доступен в проекте Lagarith. Проект FFmpeg также содержит реализацию HuffYUV, что позволяет создавать и проигрывать файлы HuffYUV на Linux и Mac OS X. Также это означает, что многие программы, которые используют FFMPEG как основу, могут также играть/создать файлы HuffYUV, например, Медиапроигрыватель VLC, MPlayer и ffdshow.

Свободно распространяемая (free software) библиотека кодеков Libavcodec содержит улучшенный вариант формата huffyuv, названный для удобства дискриминации старого кодека " ffvhuff " (FourCC: FFVH). Усовершенствования включают, среди прочих, поддержку YV12 цветового пространства (оригинальный huffYUV кодек был ограничен YUY2 и RGB) и улучшенную эффективность сжатия с использованием добавленной в FF адаптивной таблицы Хаффмана.

Библиотека нового ff-кодека имеет обратную совместимость с эталонным старым huff-кодеком, но последний не совместим с новым форматом ffvhuff. Новый кодек для Windows, например, на интерфейсе ffdshow доступен и может использоваться в записи на VirtualDub(Mod) или OBS Studio, и подобных задачах сжатия без потерь на лету. Для хранения более ценных lossless-исходников, видимо, лучше применять старый huffyuv, поскольку новый кодек это huffyuv + adaptive huffman tables.