H266
H.266/VVC (Versatile Video Coding) – это стандарт сжатия видео, разработанный ITU-T Video Coding Experts Group (VCEG) и MPEG. Утвержден в июле 2020 года. Основные цели разработки стандарта заключались в улучшении эффективности сжатия по сравнению с предшественниками, такими как H.264/AVC и H.265/HEVC, при сохранении высокого качества видео.
Характеристики:
- Эффективность сжатия: По оценкам разработчиков, VVC обеспечивает снижение битрейта на 40–50% по сравнению с HEVC при том же качестве видео. Это достигается за счет использования новых инструментов кодирования, таких как адаптивные матрицы квантования, улучшенные предсказания движения и дополнительные блоки преобразования.
- Разрешение: Поддерживает разрешение до 8K UHD (7680x4320), а также может работать с форматами HDR10 и Dolby Vision.
- Частота кадров: До 120 fps.
- Битовая глубина: Поддержка 10-битного и 12-битного цвета.
- Совместимость с предыдущими поколениями: Хотя VVC предлагает значительные улучшения, он не является обратно совместимым с H.265/HEVC или другими старыми стандартами.
Применение:
- Потоковые сервисы: Потенциальная замена для существующих сервисов потокового вещания, которые используют H.265/HEVC.
- Телевидение высокой четкости: Ультра-HD телевидение, включая спутниковые трансляции и кабельные системы.
- Виртуальная реальность и дополненная реальность: Высокая эффективность сжатия делает VVC привлекательным для приложений VR/AR, требующих передачи больших объемов данных.
- Интернет вещей (IoT): Камеры видеонаблюдения и другие устройства IoT могут использовать VVC для уменьшения объема передаваемых данных без потери качества.
Сравнение с другими кодеками:
H.265/HEVC
- Сжатие: VVC достигает большей степени сжатия, чем HEVC, примерно на 30–50%.
- Производительность: Требует больше вычислительной мощности для декодирования и кодирования по сравнению с HEVC.
- Патенты: Лицензионный пул VVC еще формируется, но ожидается, что стоимость лицензий будет выше, чем у HEVC.
AV1
- Открытый исходный код: AV1 разрабатывается Альянсом открытых медиа (AOMedia) и доступен бесплатно. VVC имеет патентованные технологии и требует лицензионных отчислений.
- Качество: AV1 демонстрирует схожую степень сжатия с VVC, однако последний все же считается немного эффективнее.
- Поддержка аппаратной части: На момент написания AV1 поддерживается меньшим количеством устройств и платформ по сравнению с VVC.
VP9
- Предыдущая версия: VP9 был выпущен Google как открытый стандарт и широко используется в YouTube. Однако VP9 уступает по эффективности сжатия как VVC, так и AV1.
- Аппаратная поддержка: Широко поддерживаемый кодек, но менее эффективен по сравнению с новыми решениями.
Уникальные особенности:
- Многоуровневое кодирование: Позволяет разбивать видео на несколько уровней с различными разрешениями и качеством, что удобно для адаптивного стриминга.
- Улучшенная обработка блоков: VVC использует различные размеры блоков для кодирования, что позволяет лучше обрабатывать сложные сцены.
- Инструменты для работы с HDR: Поддержка широкого динамического диапазона (HDR) и высокая точность цветопередачи делают VVC подходящим для контента с высоким разрешением и контрастностью.
Ограничения:
- Высокая сложность реализации: Требуется значительное количество ресурсов для кодирования и декодирования, что может затруднять внедрение на устройствах с ограниченными ресурсами.
- Стоимость лицензий: Ожидается, что лицензии на использование VVC будут дороже, чем на предыдущие стандарты.
Алгоритм кодирования:
Основной алгоритм кодирования VVC включает следующие этапы:
- Предсказание движения: Использование межкадрового предсказания для минимизации избыточности между кадрами.
- Трансформация: Применение различных типов преобразований (например, DCT) к блокам пикселей для сокращения информации.
- Квантование: Квантизация коэффициентов преобразования для дальнейшего снижения размера данных.
- Энтропийное кодирование: Использование энтропийных методов кодирования (например, CABAC) для дополнительной компрессии.
- Фильтрация: Применение фильтров для удаления артефактов и повышения качества изображения.
- Контроль скорости передачи данных: Адаптивное управление битрейтом для поддержания заданного уровня качества.
Пример кодирования через FFmpeg:
ffmpeg -i input.mp4 -c:v libvvc -b:v 5000k output.mp4
Этот пример показывает базовую команду для кодирования видео с использованием библиотеки libvvc и битрейтом 5000 kbps.
Пример кодирования через GStreamer:
gst-launch-1.0 filesrc location=input.mp4 ! decodebin ! videoconvert ! vvcenc ! mp4mux ! filesink location=output.mp4
Здесь мы используем элемент vvcenc для кодирования видео в формате VVC и сохранения результата в MP4-контейнер.
Таким образом, H.266/VVC представляет собой современный стандарт сжатия видео, который значительно улучшает качество и эффективность по сравнению с предыдущими поколениями кодеков, хотя и требует значительных вычислительных ресурсов и имеет высокие лицензионные затраты.