Sayfaların daha hızlı yüklenmesi için animasyonlu GIF'leri videoyla değiştirin

Imgur veya Gfycat gibi bir hizmette animasyonlu GIF gördüğünüzde geliştirici araçlarınızı kullanarak GIF'i incelediğinizde GIF'in aslında bir video olduğunu fark ettiniz mi? Bunun iyi bir nedeni var. Animasyonlu GIF'ler çok büyük olabilir.

13,7 MB'lık bir GIF'i gösteren Geliştirici Araçları ağ paneli.

Neyse ki bu, yükleme performansında büyük kazanımlar elde etmek için görece daha az iş yapabileceğiniz alanlardan biridir. Büyük GIF'leri videoya dönüştürerek kullanıcıların bant genişliğinden önemli ölçüde tasarruf edebilirsiniz.

Önce ölçüm yapın

Sitenizde videoya dönüştürülebilecek GIF'ler olup olmadığını kontrol etmek için Lighthouse'u kullanın. DevTools'ta Denetlemeler sekmesini tıklayın ve Performans onay kutusunu işaretleyin. Ardından Lighthouse'u çalıştırın ve raporu kontrol edin. Dönüştürülebilen GIF'leriniz varsa "Animasyonlu içerik için video biçimlerini kullanın" önerisi göreceksiniz:

Başarısız bir Lighthouse denetimi. Animasyonlu içerik için video biçimleri kullanın.

MPEG videolar oluşturun

GIF'leri videoya dönüştürmenin birkaç yolu vardır. Bu kılavuzda FFmpeg aracı kullanılmıştır. GIF'i (my-animation.gif) MP4 videosuna dönüştürmek için FFmpeg'i kullanmak istiyorsanız konsolunuzda aşağıdaki komutu çalıştırın:

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

Bu işlem, FFmpeg'e my-animation.gif işaretini giriş olarak almasını ve -i işaretiyle birlikte my-animation.mp4 adlı bir videoya dönüştürmesini söyler.

libx264 kodlayıcı yalnızca 320 piksele 240 piksel gibi eşit boyutlara sahip dosyalarla çalışır. Giriş GIF'inin boyutları tuhafsa FFmpeg'in "yükseklik/genişlik 2'ye bölünmez" hatası vermesini önlemek için bir kırpma filtresi ekleyebilirsiniz:

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 videoları oluşturma

MP4 1999'dan beri kullanılsa da WebM, ilk olarak 2010'da kullanıma sunulan nispeten yeni bir dosya biçimidir. WebM videoları MP4 videolarından çok daha küçüktür ancak tüm tarayıcılar WebM'yi desteklemediğinden her ikisini de oluşturmak mantıklıdır.

my-animation.gif dosyasını WebM videosuna dönüştürmek amacıyla FFmpeg'i kullanmak için konsolunuzda aşağıdaki komutu çalıştırın:

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

Farkları karşılaştırma

GIF ile video arasında maliyet tasarrufu oldukça önemli olabilir.

GIF için 3,7 MB, MP4 için 551 KB ve webm için 341 KB dosya boyutu karşılaştırması.

Bu örnekte, ilk GIF 3,7 MB'tır. MP4 sürümü 551 KB, WebM sürümü ise yalnızca 341 KB'tır.

GIF resmini videoyla değiştirme

Animasyonlu GIF'lerin, videonun kopyalaması gereken üç temel özelliği vardır:

  • Bu içerikler otomatik olarak oynatılır.
  • Sürekli olarak döngüde oynatılırlar (genellikle, ancak döngüyü engellemek mümkündür).
  • Sessizdirler.

Neyse ki <video> öğesini kullanarak bu davranışları yeniden oluşturabilirsiniz.

<video autoplay loop muted playsinline></video>

Bu özelliklere sahip bir <video> öğesi otomatik olarak oynatılır, sonsuz döngü içinde döngü yapar, hiçbir ses çalmaz ve satır içinde oynatılır (yani tam ekran olmaz). Animasyonlu GIF'lerden beklenen tüm genel davranışlara benzer özellikler sunar. 🎉

Son olarak, <video> öğesi, tarayıcının biçim desteğine bağlı olarak tarayıcı tarafından seçilebilecek farklı video dosyalarını işaret eden bir veya daha fazla <source> alt öğesi gerektirir. Hem WebM hem de MP4 sağlayın. Böylece, WebM'yi desteklemeyen tarayıcılar MP4'e geri dönebilir.

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

Largest Contentful Paint (LCP) üzerindeki etkisi

<img> öğelerinin LCP için aday olmasına rağmen poster resmi olmayan <video> öğelerinin LCP adayı olmadığını unutmayın. Animasyonlu GIF'lerin emülasyonu durumunda, <video> öğelerinize poster özelliği eklenmeyeceğinden, bu durumun çözümü değildir.

Bu durum web siteniz için ne anlama geliyor? Animasyonlu GIF yerine <video> kullanmaya devam etmeniz önerilir. Ancak bu tür medyaların LCP için aday olmayacağı ve bunun yerine bir sonraki en büyük adayın kullanılacağı unutulmamalıdır. GIF'ler ve <video>'ler genellikle daha büyük olduğundan ve bu nedenle indirmeleri daha yavaş olduğundan, farklı bir LCP adayına geçmek sitenin LCP'sini bile iyileştirebilir.