1. VAP
VAP (Video Animation Player) — это разработка от компании «企鹅电竞», предназначенная для воспроизведения впечатляющей анимации.
Демонстрация эффектов:
Кроме того, VAP может интегрировать в анимацию пользовательские атрибуты (такие как имя пользователя и аватар).
2. Проект
«企鹅电竞» — это платформа для прямых трансляций, которая требует отображения впечатляющих анимаций подарков в прямом эфире.
Анимации становятся всё более впечатляющими, а требования к размеру исходного материала и производительности декодирования растут. Мы провели исследование различных решений и составили сравнительную таблицу:
Размер файла | Способ декодирования | Поддержка спецэффектов |
---|---|---|
Lottie | Невозможно экспортировать | Программное декодирование |
GIF | 4,6 МБ | Программное декодирование |
Apng | 10,6 МБ | Программное декодирование |
Webp | 9,2 МБ | Программное декодирование |
mp4 | 1,5 МБ | Аппаратное декодирование |
VAP | 1,5 МБ | Аппаратное декодирование |
Исследование решений:
После исследования мы обнаружили, что либо эффекты не соответствуют требованиям (Lottie и GIF), либо файлы слишком велики и всё ещё используют программное декодирование (Webp и Apng), либо не поддерживают прозрачность (mp4). Ни одно из этих решений не может удовлетворить наши потребности, поэтому появился высокопроизводительный компонент анимации VAP.
3. Реализация
Решение на основе видео в формате mp4 является оптимальным с точки зрения эффектов, размера и производительности декодирования. Но данные, хранящиеся в H264, представляют собой YUV, без канала прозрачности. Решение VAP основано на mp4 и решает проблему прозрачности в видео, позволяя достичь лучшего соотношения сжатия и лучшей производительности декодирования.
Данные, декодированные из H264, являются YUV после преобразования в RGB, без альфа-канала. Мы можем выделить дополнительную область в видео для хранения значений альфа, а затем использовать OpenGL для объединения этих данных в изображение ARGB (с альфа-каналом).
Например, после декодирования видеокадра исходные данные изображения объединяются следующим образом:
Каждая рамка проходит через один и тот же процесс, создавая видео с прозрачностью. Окончательный эффект выглядит так:
Исходное видео | Конечный эффект |
---|---|
![]() |
![]() |
В исходном видео чёрные и белые области содержат данные альфа. Последняя версия VAP позволяет изменять размер области альфа, уменьшая её размер без ущерба для конечного эффекта отображения, эффективно уменьшая разрешение видео, повышая совместимость с устройствами и оставляя дополнительное пространство для будущих функций VAP, таких как интеграция.
Во время воспроизведения анимации требуется некоторая информация о конфигурации, такая как объявление области альфа и информация об интеграции анимации. Конфигурация представлена в формате JSON. Чтобы упростить использование компонента, все связанные файлы объединены в файл mp4.
Организация файлов в mp4 похожа на организацию ключей и значений в JSON, называемую BOX. Мы создаём новый BOX (vapc VAP Config), помещаем содержимое JSON в этот BOX, и перед воспроизведением сначала считываем этот BOX. Обратите внимание, что если формат mp4 не распознаёт определённый BOX, он автоматически игнорируется, не влияя на нормальный процесс воспроизведения mp4.
VAP также поддерживает интеграцию пользовательских атрибутов, таких как имена пользователей и аватары, в анимацию. Мы называем это интеграцией анимации VAP.
Невозможно напрямую вставить атрибуты в видеоконтент, можно только обмануть глаза зрителя, обрезав изображения атрибутов и создав иллюзию их присутствия в видео. Это достигается путём использования изображений-масок и операций Porter-Duff для получения желаемой формы.
Для реализации обработки изображений атрибутов необходимо ввести изображения-маски. Используя изображения-маски и изображения атрибутов, можно выполнить операцию Porter-Duff, чтобы получить нужную форму.
Затем результат накладывается на соответствующую позицию видео, достигая окончательного эффекта интеграции.
Изображения-маски сохраняются в каждой рамке видео, освобождая пространство за счёт уменьшения области альфа. Эффект реализуется следующим образом:
И окончательный эффект выглядит так:
Чтобы облегчить использование компонента, предоставляются дополнительные инструменты для создания материалов.
VAP находится под лицензией MIT. Подробности см. в файле LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )