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

Hiç Imgur veya Gfycat gibi bir hizmette animasyonlu GIF görüp geliştirici araçlarınızda GIF'in gerçekten bir video olduğunu gördünüz mü? Bunun iyi bir sebebi var. Animasyonlu GIF'ler çok büyük olabilir.

13,7 MB'lık bir GIF gösteren DevTools ağ paneli.

Neyse ki bu, büyük kazançlar elde etmek için nispeten az çalışarak yükleme performansı alanlarından biri. Büyük GIF'leri videolara dönüştürerek kullanıcıların bant genişliğinden önemli ölçüde tasarruf edebilirsiniz.

Önce ölçüm yapın

Sitenizde videolara dönüştürülebilecek GIF'leri kontrol etmek için Lighthouse'u kullanın. Geliştirici Araçları'nda Denetimler sekmesini tıklayın ve Performans onay kutusunu işaretleyin. Sonra Lighthouse'u çalıştırıp raporu kontrol edin. Dönüştürülebilen GIF'leriniz varsa "Animasyonlu içerik için video biçimlerini kullan" önerisini görürsünüz:

Lighthouse denetimi başarısız oluyor. Animasyonlu içerikler için video biçimlerini kullanın.

MPEG videolar oluşturma

GIF'leri videoya dönüştürmenin birkaç yolu vardır. Bu rehberde kullanılan araç FFmpeg'tir. GIF'i FFmpeg'e dönüştürmek için my-animation.gif öğesini MP4 videosuna dönüştürmek için 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, -i işaretiyle belirtilen giriş olarak my-animation.gif değerini alıp my-animation.mp4 adlı bir videoya dönüştürmesini söyler.

libx264 kodlayıcı yalnızca 320 piksele 240 piksel gibi çift boyutlara sahip dosyalarla çalışır. Girdi GIF'inin boyutları tek ise FFmpeg'in "yükseklik/genişlik 2'ye bölünmez" hatası vermesini önlemek için 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şturun

MP4 1999 yılından beri kullanılıyor olsa da WebM, 2010 yılında kullanıma sunulan nispeten yeni bir dosya biçimidir. WebM videoları MP4 videolardan çok daha küçüktür ancak tüm tarayıcılar WebM'yi desteklemez. Bu nedenle her ikisini birden oluşturmak mantıklıdır.

my-animation.gif öğesini bir WebM videosuna dönüştürmek üzere 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

Farkı karşılaştırın

GIF ile video arasında önemli ölçüde tasarruf sağlayabilirsiniz.

GIF için 3,7 MB, mp4 için 551 KB ve webm için 341 KB'ı gösteren dosya boyutu karşılaştırması.

Bu örnekte, ilk GIF'in boyutu 551 KB olan MP4 sürümüne kıyasla 3,7 MB ve WebM sürümünün boyutu yalnızca 341 KB'tır.

GIF resmini bir videoyla değiştirme

Animasyonlu GIF'lerin bir videonun taklit etmesi gereken üç temel özelliği vardır:

  • Bunlar otomatik olarak oynatılır.
  • Sürekli olarak döngü oluştururlar (genellikle ancak döngüyü önlemek mümkündür).
  • Sessiz olurlar.

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 çalışır, ses çalmaz ve animasyonlu GIF'lerden beklenen tüm ayırt edici davranışlara satır içinde (yani tam ekran değil) satır içinde oynatılır! 🎉

Son olarak <video> öğesi, tarayıcının biçim desteğine bağlı olarak tarayıcının seçim yapabileceği 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 bir tarayıcı WebM'yi desteklemiyorsa 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> öğeleri LCP adayları olsa da poster resmi olmayan <video> öğelerinin LCP adayları olmadığı unutulmamalıdır. Animasyonlu GIF'lerin taklit edilmesi durumunda çözüm, resim kullanılmayacağı için <video> öğelerinize poster özelliğini eklemek değildir.

Bu durum web siteniz için ne anlama geliyor? Bu tür bir medyanın LCP için aday olmayacağı ve bunun yerine bir sonraki en büyük adayın kullanılacağı anlayışıyla, animasyonlu GIF yerine bir <video> kullanmaya devam etmeniz önerilir. GIF'ler ve <video>'ler genellikle daha büyük olduğundan ve indirilmesi çok daha yavaş olduğundan, farklı bir LCP adayına geçiş yapmak sitenin LCP'sini bile iyileştirebilir.