Вы находитесь здесь!
  • Home
  • Zond 265Проверка HEVC с поддержкой альфа-канала

Проверка HEVC с поддержкой альфа-канала

24.10.2024 Olga Krovyakova 403

Высокоэффективное кодирование видео (HEVC), также известное как H.265, предлагает расширенные возможности сжатия, но включение прозрачности (альфа-канала) в поток HEVC представляет собой техническую проблему. В этой статье рассматривается, как кодировать HEVC с альфа-каналом с помощью кодировщика x265, извлекать  YUVA (YUV + альфа) данные с помощью FFmpeg и проверять прозрачность в различных форматах, таких как VP9. Мы также рассмотрим ограничения существующих инструментов при обработке альфа-каналов, в частности, FFmpeg и Zond 265.

Кодирование HEVC с альфа-каналом с помощью x265

Для тестирования сжатия видео с прозрачностью в HEVC будет использоваться кодировщик x265. Его можно скачать с сайта VideoLAN. Версия кодировщика, использованная для этого теста, взята из коммита 26d2bab00 (от 04.10.2024), собранного на Windows с опцией ENABLE_ALPHA. Подготовлены исходные YUVA420p данные, где значения альфа-канала менялись для различных кадров. Кодирование этих данных в поток HEVC с альфа-каналом выполняется с помощью следующей команды:

x265.exe --input-res 1920x1080 --fps 30 --input input.yuva --alpha --output output.h265

x265_log

В результате получается элементарный поток H.265 с разрешением 1920×1080 и альфа-каналом. Скачать его можно здесь.

Извлечение YUVA данных с помощью FFmpeg

Извлечение данных YUVA420p из закодированного потока HEVC выполняется с помощью FFmpeg. Версия FFmpeg, использованная для этого теста, была собрана из основной ветки (2024-10-21-git-baa23e40c1 на Windows). В процессе извлечения FFmpeg выдает следующие ошибки:

ffmpeg -i output.h265 -pix_fmt yuva420p output_yuva.yuv -loglevel verbose -hide_banner

ffmpeg_log

Для декодированного потока 1920×1080 ожидаемые данные о прозрачности должны начинаться со смещения 0x2F7600 (рассчитывается как 1920*1080*3/2 = 3110400 байт). Альфа-канал в файле YUVA420p проверяется с помощью hex-редактора и показывает, что альфа-канал содержит только значения 0xFF (указывающие на полную непрозрачность) вместо ожидаемой маски переменной прозрачности.

ffmpeg_yuva

Кроме того, при попытке мультиплексировать сжатый поток в формат MP4, FFmpeg выдает те же ошибки, что и в процессе извлечения:

ffmpeg -i output.h265 -c:v copy output.mp4 -loglevel verbose

Работа с VP9 и прозрачностью

Прозрачность также может быть закодирована в VP9, ​​другом кодеке, широко используемом для веб-видео. Давайте протестируем извлечение данных YUVA420p из файла VP9 с прозрачностью с помощью FFmpeg:

ffmpeg -vcodec libvpx-vp9 -i "input.webm" -pix_fmt yuva420p output_vp9.yuv

Скачать закодированный файл VP9 можно здесь.

Теперь hex-редактор отображает корректные данные о прозрачности при просмотре извлеченного YUV-файла.

ffmpeg_yuva_vp9

Прозрачность также можно проверить, воспроизведя видео VP9 в Chrome (версия 130.0.6723.58) на Windows.

vp9_chrome

HEVC с альфа-каналом на macOS

Для создания HEVC-файла с альфа-каналом можно начать с экспорта видео в формате ProRes 4444 в таких приложениях, как Final Cut Pro или Adobe Premiere Pro. ProRes 4444 сохраняет альфа-канал, обеспечивая поддержку прозрачности на протяжении всего процесса редактирования и экспорта.

«Закодировать выбранные видеофайлы» — это служба Finder, доступная в macOS. Она позволяет пользователям быстро конвертировать видео в различные форматы, включая HEVC (H.265), H.264 и ProRes, непосредственно из Finder без необходимости открывать приложение для редактирования видео. Эта служба включает опцию сохранения прозрачности (альфа-канала) при конвертации видео ProRes 4444 в HEVC. Эта служба впервые появилась в macOS High Sierra (10.13). Она стала первой версией macOS, в которой появилась встроенная поддержка кодирования HEVC. Работает на любом Mac с аппаратной поддержкой кодирования HEVC, как правило, это компьютеры Mac, выпущенные в 2016 году и позже, с процессорами Intel (Skylake или более новыми) или Apple Silicon (например, M1, M2).

После получения ProRes 4444 файла, macOS предоставляет способ закодировать его в HEVC, сохранив при этом прозрачность.

1. Щелкните правой кнопкой мыши (или нажмите Control+клик) на файле ProRes 4444 в Finder.

encode_selected_video_context

2. В контекстном меню выберите «Закодировать выбранные видеофайлы». В открывшемся окне выберите HEVC 1080p в качестве целевого формата и установите флажок «Сохранить прозрачность».

Проверка HEVC с поддержкой альфа-канала

3. Затем macOS закодирует файл HEVC, который сохранит прозрачность исходного файла ProRes 4444.

Чтобы убедиться, что прозрачность сохранилась, вы можете открыть файл HEVC в QuickTime Player (для тестов используется приложение, установленное в macOS версии 14.7 (23H124)).

Quicktime

QuickTime поддерживает воспроизведение файлов HEVC с прозрачностью, поэтому вы сможете заметить альфа-канал в области предварительного просмотра проигрывателя.

Однако, если вы попытаетесь декодировать этот файл с помощью FFmpeg, полученный YUVA буфер будет содержать только значения 0xFF в альфа-канале, аналогично тому, что мы наблюдали с x265. Это указывает на то, что FFmpeg по-прежнему не поддерживает корректное декодирование альфа-каналов из потоков HEVC.

Просмотр сообщения SEI alpha_channel_info в Zond 265

Потоки HEVC, содержащие информацию об альфа-канале, включают сообщение Supplemental Enhancement Information (SEI) с payloadType=165. Это сообщение SEI, называемое alpha_channel_info, указывает на наличие альфа-канала в потоке. В Zond 265 , инструменте для анализа битовых потоков HEVC, вы можете проверить наличие alpha_channel_info, перейдя на вкладку «Bitstream» и щелкнув заголовок Prefix SEI. Там вы найдете подробную информацию об альфа-канале в потоке. Хотя Zond 265 в настоящее время не поддерживает просмотр альфа-каналов в декодированных буферах YUVA, будущие обновления могут позволить визуализировать прозрачность.

zond_sei_alpha_channel_info

Часто задаваемые вопросы

В: Что такое формат YUVA 420?

A: YUVA420p — это пиксельный формат, включающий компоненты Y (яркость), U, V (цветность) и A (альфа-канал). Это распространенный формат для представления видео с прозрачностью. YUVA420p использует субдискретизацию цветности 4:2:0, что означает, что каналы цветности (U и V) дискретизируются с разрешением вдвое меньшим по горизонтали и вертикали по сравнению с каналом яркости (Y), с дополнительным альфа-каналом для информации о прозрачности.

В: Как проверить наличие прозрачности в видеофайле YUVA 420?

A: Вы можете использовать специализированные видео инструменты или онлайн-приложения, позволяющие загружать и просматривать видео в формате YUVA 420. Эти инструменты помогают проверить наличие альфа-канала в видео, проверив маску прозрачности. Некоторые инструменты также позволяют покадрово проверять видео, чтобы убедиться в правильности информации о прозрачности.

В: Можно ли закодировать YUVA 420, сохранив при этом прозрачность?

A: Да, существуют видеокодеки, которые могут обрабатывать видео в формате YUVA 420. Например, вы можете закодировать видео с прозрачностью в HEVC или VP9 и сохранить его в файлах MP4 или WebM соответственно. Преобразование можно выполнить с помощью таких инструментов, как FFmpeg, или специальных приложений macOS, поддерживающих видео с прозрачностью. Альфа-канал сохраняется в процессе преобразования, что позволяет видео сохранять свою прозрачность при воспроизведении.

В: Можно ли вручную проверить данные YUVA 420?

A: Да, вы можете использовать инструменты анализа видео, такие как hex-редактор или программы для просмотра YUV-файлов, чтобы проверить исходные данные YUVA 420. Изучив значения альфа-канала, вы можете убедиться, что информация о прозрачности правильно внедрена в файл. Это полезно для отладки или обеспечения правильного кодирования при работе с видео YUVA 420.

В: Что такое HEVC с альфа-каналом?

HEVC (High Efficiency Video Coding) с альфа-каналом — это видеофайлы, закодированные в формате HEVC, которые также содержат альфа-канал, используемый для хранения информации о прозрачности. Альфа-канал позволяет делать прозрачными части видео, что полезно для наложения изображений, спецэффектов или композитинга.

В: Как быстро проверить, есть ли в видеофайле прозрачность?

A: Вы можете использовать Zond 265 для проверки информации об альфа-канале в сообщении SEI с параметром payloadType=165, который сигнализирует о наличии альфа-канала в потоке.

Вы также можете использовать другие онлайн-инструменты, позволяющие загрузить видеофайл и просмотреть его прозрачность непосредственно в веб-браузере. Просто выберите файл, и инструмент покажет, содержит ли он альфа-канал (прозрачность).

В: Существует ли инструмент, позволяющий конвертировать видео с прозрачностью?

A: В macOS вы можете кодировать HEVC с альфа-каналом, используя ProRes 4444 в качестве источника, с помощью встроенной в Finder службы «Кодировать выбранные видеофайлы», которая поддерживает HEVC с альфа-каналом.

На платформе Windows можно кодировать видео с прозрачностью в формат WebM, используя кодек VP9 и FFmpeg.

Заключение

Кодирование и извлечение прозрачности в HEVC по-прежнему остается сложной задачей, особенно из-за существующих ограничений популярных инструментов, таких как FFmpeg. Хотя VP9 обеспечивает лучшую поддержку прозрачности, HEVC с альфа-каналом все еще находится в разработке и требует специальных инструментов декодирования. macOS предлагает нативное кодирование HEVC с прозрачностью с использованием ProRes 4444, а также декодирование — проигрыватель QuickTime полностью совместим и позволяет корректно просматривать видео с прозрачностью.

Rate this post

Проверка ограничений уровня AV1 с помощью Zond 265

Введение Кодек AV1, разработанный Alliance for Open Media, широко используется современными стриминговыми платформами, такими как YouTube и Netflix. При анализе битовых потоков AV1 в Zond 265 вы можете столкнуться с таблицей “Level Constraint check” (Проверка ограничений уровня). В этой статье объясняется, что это означает и как это интерпретировать. Что такое AV1 Level и Tier? AV1 […]