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

Imgur veya Gfycat gibi bir hizmette hareketli GIF görüp geliştirici araçlarınızda inceledikten sonra GIF'in aslında video olduğunu fark ettiğiniz oldu mu? 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ının nispeten az çalışarak büyük kazançlar elde edebileceğiniz alanlarından 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. Geliştirici Araçları'nda 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ülebilecek GIF'leriniz varsa "Animasyonlu içerik için video biçimleri kullanın" önerisini görürsünüz:

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

MPEG videoları oluşturma

GIF'leri videoya dönüştürmenin çeşitli yolları vardır. Bu kılavuzda kullanılan araç FFmpeg'dir. GIF'i MP4 videoya dönüştürmek için FFmpeg'i kullanmak üzere konsolunuzda aşağıdaki komutu çalıştırın:my-animation.gif

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

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

libx264 kodlayıcı yalnızca 320x240 piksel gibi eşit boyutlara sahip dosyalarla çalışır. Giriş GIF'inin boyutları tekse FFmpeg'in "yükseklik/genişlik 2'ye bölünemiyor" 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şturma

MP4 1999'dan beri kullanılsa da WebM, 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 için FFmpeg'yi kullanmak üzere 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ırma

GIF ile video arasındaki 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ı gösteriliyor.

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

GIF resmini videoyla değiştirme

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

  • Otomatik olarak oynatılır.
  • Sürekli olarak döngüye girerler (genellikle, ancak döngüye girmeyi önlemek mümkündür).
  • Sessizdirler.

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

<video autoplay loop muted playsinline></video>

Bu özelliklere sahip bir <video> öğesi otomatik olarak oynatılır, sonsuza kadar döngüye girer, ses çalmaz ve satır içi (yani tam ekran değil) oynatılır. Bunların hepsi, animasyonlu GIF'lerden beklenen temel davranışlardır. 🎉

Son olarak, <video> öğesi, tarayıcının biçim desteğine bağlı olarak tarayıcının seçebileceği farklı video dosyalarını işaret eden bir veya daha fazla <source> alt öğesi gerektirir. Hem WebM hem de MP4 biçiminde video sağlayın. Böylece, 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> öğelerinin LCP için aday olduğu, ancak poster resmi olmayan <video> öğelerinin LCP adayı olmadığı unutulmamalıdır. Animasyonlu GIF'lerin taklit edilmesi durumunda çözüm, <video> öğelerinize poster özelliğini eklememektir. Çünkü bu resim kullanılmaz.

Bu durum web sitenizi nasıl etkiler? Animasyonlu GIF yerine <video> kullanmaya devam etmeniz önerilir. Ancak bu tür medyanın LCP için aday olmayacağını ve bunun yerine bir sonraki en büyük adayın kullanılacağını unutmayın. GIF'ler ve <video>'ler genellikle daha büyük olduğundan indirilmesi daha uzun sürer. Bu nedenle, farklı bir LCP adayı kullanmak sitenin LCP'sini daha da iyileştirebilir.