Czy zdarzyło Ci się zobaczyć animowany GIF w usłudze takiej jak Imgur czy Gfycat, sprawdzić go w narzędziach dla programistów, a potem odkryć, że to w rzeczy samej jest to film? Jest ku temu dobry powód. Animowane GIF-y mogą być ogromne.
Na szczęście jest to jeden z tych obszarów wydajności wczytywania, w których możesz osiągnąć ogromne korzyści przy stosunkowo niewielkim nakładzie pracy. Konwertowanie dużych plików GIF na filmy pozwala zaoszczędzić na przepustowości użytkowników.
Pomiar najpierw
Użyj narzędzia Lighthouse, aby sprawdzić, czy na stronie znajdują się GIF-y, które można przekonwertować na filmy. W Narzędziach deweloperskich kliknij kartę Kontrole i zaznacz pole wyboru Wydajność. Następnie uruchom narzędzie Lighthouse i sprawdź raport. Jeśli masz GIF-y, które można przekonwertować, zobaczysz sugestię „Użyj formatów wideo do treści animowanych”:
Tworzenie filmów MPEG
Istnieje wiele sposobów konwertowania GIF-ów na filmy. Narzędziem użytym w tym przewodniku jest FFmpeg.
Aby przekonwertować plik GIF (my-animation.gif
) na film MP4 za pomocą programu FFmpeg, uruchom w konsoli to polecenie:
ffmpeg -i my-animation.gif -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p my-animation.mp4
Dzięki temu FFmpeg ma przyjąć my-animation.gif
jako dane wejściowe oznaczoną flagą -i
i przekonwertować go na film o nazwie my-animation.mp4
.
Koder libx264 działa tylko z plikami o parzystych wymiarach, np. 320 x 240 pikseli. Jeśli wejściowy GIF ma nieparzyste wymiary, możesz użyć filtra przycinania, aby uniknąć błędu FFmpeg „height/width not divisible by 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
Tworzenie filmów WebM
Podczas gdy format MP4 istnieje od 1999 r., WebM jest stosunkowo nowym formatem pliku, który został po raz pierwszy opublikowany w 2010 r. Pliki wideo WebM są znacznie mniejsze niż pliki MP4, ale nie wszystkie przeglądarki obsługują format WebM, więc warto wygenerować oba formaty.
Aby za pomocą FFmpeg przekonwertować plik my-animation.gif
na film WebM, uruchom na konsoli to polecenie:
ffmpeg -i my-animation.gif -c vp9 -b:v 0 -crf 41 my-animation.webm
Porównaj różnice
Oszczędności na kosztach między GIF-em a filmem mogą być dość znaczne.
W tym przykładzie początkowy GIF ma rozmiar 3,7 MB, w porównaniu z wersją MP4, która ma 551 KB, i wersją WebM, która ma tylko 341 KB!
Zastąp GIF-a filmem
Animowane GIF-y mają 3 kluczowe cechy, które musi odtworzyć film:
- Będą odtwarzane automatycznie.
- Powtarzają się w sposób ciągły (zwykle, ale można zapobiec zapętleniu).
- Są wyciszone.
Na szczęście możesz odtworzyć te zachowania za pomocą elementu <video>
.
<video autoplay loop muted playsinline></video>
Element <video>
z tymi atrybutami odtwarza się automatycznie, bez końca, bez dźwięku i w tekście (czyli nie na pełnym ekranie). Wszystkie charakterystyczne elementy animowanych GIF-ów są typowe. 🎉
I wreszcie element <video>
wymaga co najmniej jednego elementu podrzędnego <source>
wskazującego różne pliki wideo, które przeglądarka może wybierać w zależności od obsługiwanych formatów. Podaj formaty WebM i MP4, aby w przypadku, gdy przeglądarka nie obsługuje formatu WebM, mogła użyć formatu MP4.
<video autoplay loop muted playsinline>
<source src="my-animation.webm" type="video/webm">
<source src="my-animation.mp4" type="video/mp4">
</video>
Wpływ na największe wyrenderowanie treści (LCP)
Pamiętaj, że chociaż elementy <img>
są kandydatami do LCP, elementy <video>
bez obrazu poster
nie są kandydatami LCP. Rozwiązaniem w przypadku emulowania animowanych GIF-ów jest nie dodawanie atrybutu poster
do elementów <video>
, ponieważ obraz nie zostanie użyty.
Co to oznacza dla Twojej witryny? Zalecamy używanie <video>
zamiast animowanych GIF-ów, pamiętając, że takie multimedia nie będą kandydatami do LCP, a zamiast nich będzie używany kolejny największy kandydat. Ponieważ pliki GIF i pliki <video>
są zwykle większe i dłużej się pobierają, przejście na inny kandydata do LCP prawdopodobnie poprawi LCP witryny.