Замените анимированные GIF-файлы видео для более быстрой загрузки страниц.

Вы когда-нибудь видели анимированный GIF на таких сервисах, как Imgur или Gfycat, просматривали его в инструментах разработчика и обнаруживали, что на самом деле это видео? На это есть веская причина. Анимированные GIF-файлы могут быть невероятно большими .

На панели сетевых инструментов разработчика отображается GIF-файл размером 13,7 МБ.

К счастью, это одна из тех областей, где при оптимизации скорости загрузки можно добиться огромных результатов, приложив сравнительно немного усилий! Преобразовав большие GIF-файлы в видео, можно значительно сэкономить трафик пользователей .

Сначала проведите замеры.

Используйте Lighthouse для проверки вашего сайта на наличие GIF-файлов, которые можно преобразовать в видео. В инструментах разработчика перейдите на вкладку «Аудит» и установите флажок «Производительность». Затем запустите Lighthouse и проверьте отчет. Если у вас есть GIF-файлы, которые можно преобразовать, вы увидите предложение «Использовать видеоформаты для анимированного контента»:

Неудачная проверка системы Lighthouse: используйте видеоформаты для анимационного контента.

Создание видео в формате MPEG

Существует несколько способов преобразования GIF-файлов в видео, в этом руководстве используется инструмент FFmpeg . Чтобы использовать FFmpeg для преобразования GIF-файла my-animation.gif в видеоформат MP4, выполните следующую команду в консоли:

ffmpeg -i my-animation.gif -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p my-animation.mp4

Это указывает FFmpeg на необходимость принять my-animation.gif в качестве входных данных , что обозначается флагом -i , и преобразовать его в видеофайл с именем my-animation.mp4 .

Кодировщик libx264 работает только с файлами, имеющими четные размеры, например, 320x240 пикселей. Если входной GIF-файл имеет нечетные размеры, можно добавить фильтр обрезки, чтобы избежать ошибки FFmpeg «высота/ширина не делится на 2»:

ffmpeg -i my-animation.gif -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p my-animation.mp4

Создавайте видео в формате WebM.

В то время как формат MP4 существует с 1999 года, WebM — это относительно новый формат файлов, впервые выпущенный в 2010 году. Видеофайлы WebM намного меньше по размеру, чем видео MP4, но не все браузеры поддерживают WebM, поэтому имеет смысл создавать оба формата.

Чтобы использовать FFmpeg для преобразования файла my-animation.gif в видеоформат WebM, выполните следующую команду в консоли:

ffmpeg -i my-animation.gif -c vp9 -b:v 0 -crf 41 my-animation.webm

Сравните разницу

Экономия средств при использовании GIF-анимации по сравнению с видеороликом может быть довольно значительной.

Сравнение размеров файлов показывает, что GIF-файл занимает 3,7 МБ, MP4-файл — 551 КБ, а WebM-файл — 341 КБ.

В этом примере исходный GIF-файл имеет размер 3,7 МБ, по сравнению с версией в формате MP4, которая составляет 551 КБ, и версией в формате WebM, которая составляет всего 341 КБ!

Замените GIF-изображение видео.

Анимированные GIF-файлы обладают тремя ключевыми характеристиками, которые должно воспроизводить видео:

  • Они воспроизводятся автоматически.
  • Они зацикливаются непрерывно (обычно, но зацикливание можно предотвратить).
  • Они молчат.

К счастью, вы можете воссоздать это поведение, используя элемент <video> .

<video autoplay loop muted playsinline></video>

Элемент <video> с такими атрибутами воспроизводится автоматически, зацикливается бесконечно, не воспроизводит звук и воспроизводится в режиме реального времени (то есть, не на весь экран) — все характерные особенности анимированных GIF-файлов! 🎉

Наконец, элемент <video> требует наличия одного или нескольких дочерних элементов <source> , указывающих на различные видеофайлы, из которых браузер может выбирать в зависимости от поддерживаемых форматов. Необходимо указать форматы WebM и MP4, чтобы в случае отсутствия поддержки WebM браузер мог использовать формат MP4.

<video autoplay loop muted playsinline>
  <source src="my-animation.webm" type="video/webm">
  <source src="my-animation.mp4" type="video/mp4">
</video>

Влияние на краску с наибольшим содержанием (LCP)

Следует отметить, что хотя элементы <img> являются кандидатами на LCP, элементы <video> без изображения- poster не являются кандидатами на LCP . Решение в случае эмуляции анимированных GIF-файлов заключается в том, чтобы не добавлять атрибут poster к вашим элементам <video> , поскольку это изображение останется неиспользованным.

Что это значит для вашего сайта? Рекомендуется использовать <video> вместо анимированного GIF-файла, но с пониманием того, что такие медиафайлы не будут соответствовать критериям LCP, и вместо них будет использоваться следующий по размеру вариант. Поскольку GIF-файлы и <video> > обычно больше по размеру и, следовательно, загружаются медленнее, переход на другой вариант LCP, скорее всего, даже улучшит LCP сайта.