Web için video: boyut, hız ve ondan önce gelen karar
Video, bir sayfaya koyabileceğiniz en ağır şeydir; bu yüzden ilk karar sıkıştırma değil, bu sayfanın videoya ihtiyacı olup olmadığıdır. Varsa dört gerçek kaldıraç vardır: doğru kodlama, çözünürlüğü gösterim boyutuna eşlemek, dosyayı önden yüklemek yerine poster kullanmak ve dosyayı HTML'i veren sunucudan başka bir yerde barındırmak.
- Ders 7 / 10
- Orta
- Ücretsiz, kayıt yok
Videoyu yükleme yolundan çıkaran dört kaldıraç
Lighthouse performans puanı 0 ile 100 arasındadır ve yeşil bandı 90'da başlar.
- Doğru kodlamaEtiketteki hiçbir nitelik kötü kodlanmış bir dosyayı telafi etmez.
- Kareye uyan çözünürlükTelefonda 360 piksel genişliğindeki bir karede 1080 piksellik dosya, çöpe atılan bayttır.
- Önden yükleme yerine posterPoster kendisi bir LCP adayıdır, bu yüzden sıkıştırılmış olmalı.
- HTML'den ayrı barındırmaPaylaşımlı barındırmada uzun bir video, kararın kırıldığı yerdir.
Lighthouse puanı bir laboratuvar ölçümüdür ve içinde kullanıcı davranışı yoktur. Videosu hiç tıklanmayan bir sayfa iyi puan alır ve tıklayan kişinin deneyimi hakkında hiçbir şey söylemez.
Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.
Bu sayfanın videoya ihtiyacı var mı?
Duruşumuz: çoğu iş sayfası videoyu otomatik oynatmamalı ve birçoğu hiç video taşımamalı.
Bunu söyleyen, video üreten ve satan bir ajans; güvenilir olmasının sebebi tam olarak bu. Arka planında video olan bir sayfa, ziyaretçi tek kelime okumadan önce megabaytlar çekmiş ve işlemcisini kare çözmeye koşmuştur. O video, metnin ve görselin söyleyemediği bir şeyi söylüyorsa bu bedel doğrudur. Yalnızca atmosferse değildir.
Üç soru, bu sırayla, kararı verir. Birincisi, bu video bir sabit görselin ve iki cümlenin göstermediği neyi gösteriyor; cevap bir demo ya da bir süreç gibi hareketse video doğrudur. İkincisi, bunu ziyaretçi mi istiyor yoksa biz mi; fiyat görmeye gelen biri şirket tanıtım filmini istemez. Üçüncüsü, hiç oynamazsa ne kaybedilir; cevap hiçbir şeyse video süstür.
Bu sitede o üç soru bizi, temada tek bir video etiketinin bulunmadığı ve bütün figürlerin HTML ve CSS ile çizildiği bir yere getirdi. Video satıyoruz ve kendi videomuz başka bir yerde duruyor, satış yapan sayfaların yükleme yolunda değil.

Bu video, bir sabit görselin ve iki cümlenin göstermediği neyi gösteriyor?
Video doğru karar
- Ürün demosu ya da adım adım bir süreç
- Değişen ve bir fotoğrafın yakalayamadığı bir şey
- Tonun mesajın parçası olduğu bir müşteri görüşü
- Poster verin, preload'u none yapın, tıklamayla oynatın
Videoyu çıkarın
- Kimsenin izlemediği bir hero arka plan videosu
- Fiyat sayfasındaki şirket tanıtım filmi
- Kısa döngülü animasyon: yerine sessiz döngülü video kullanın
- Hiç oynamazsa hiçbir şeyin kaybolmadığı her video
Video, sayfa hızını tam olarak nereden vurur?
İki yerden ve yalnızca biri herkesin aklına gelen yer.
Birincisi ağırlıktır ve tanıdıktır: indirilen baytlar sayfanın geri kalan kaynaklarıyla aynı bant genişliği için yarışır ve ortalama bir bağlantıda mobilde bu yarışı video kazanır, çünkü daha büyüktür. İkincisi daha az bilinir ve daha önemlidir: videonun kendisi sayfanın LCP ögesi olabilir. web.dev belgeleri video ögesini LCP adayı olarak sayar ve onun için hangisi önce gelirse o kullanılır: poster görselinin yüklenme zamanı ya da ilk karenin gösterim zamanı.
Yani sayfanın üst kısmındaki en büyük şey bir videoysa, Google'ın sayfa deneyimi olarak ölçtüğü metrik ona bağlanmıştır. web.dev'in iyi bir LCP için verdiği eşik, yüklemelerin 75. yüzdeliğinde 2,5 saniye ya da altıdır; 4 saniyenin üstü zayıf sayılır.
Pratik sonuç iki satırdır. Video otomatik oynamıyorsa ona mutlaka bir poster verin, çünkü o zaman LCP yolunda bir video indirmesi yerine optimize edilmiş bir görsel oturur. Ve o poster sayfadaki en büyük ögeyse web.dev, önceliğini fetchpriority="high" ile yükseltmeyi öneriyor.
Sürekli karşılaşılan bir tuzak: kötü bir poster ya da kendisi birkaç yüz kilobayt olan bir poster. Poster sıradan bir görseldir ve aynı optimizasyon kurallarına tabidir; sıkıştırmazsanız yaptığınız tek şey sorunu yerinden oynatmaktır.
Video etiketinin hangi ayarları gerçekten fark yaratır?
Dördü ve en büyük etki en az ayarlanana ait: preload.
| preload değeri | Tarayıcı ne yapar | Nerede doğrudur |
|---|---|---|
none | Videonun hiçbir kısmı önden yüklenmez | Kullanıcının tıklaması gereken bir video |
metadata | Yalnızca süre gibi dosya bilgisi getirilir | MDN'nin önerdiği varsayılan |
auto | Hiç oynatılmasa bile dosyanın tamamı inebilir | Bir satış sayfasında neredeyse hiçbir yerde |
web.dev'in video bölümü, kullanıcının başlattığı oynatma için açıkça preload="none" diyor. Bu tek nitelik, sayfadaki en ağır indirmeyi yükleme yolundan çıkarır.
Poster ikincisidir. MDN, poster olmadan ilk kare hazır olana kadar hiçbir şeyin görüntülenmediğini, sonra o ilk karenin poster olarak gösterildiğini söylüyor; yani postersiz ya boş bir dikdörtgeniniz olur ya da dosyayı daha erken getirmek zorunda kalırsınız.
Otomatik oynatma üçüncüsüdür ve bir ayardan çok bir karardır. web.dev, autoplay'in yalnızca gerektiğinde ve kullanıcının öngörülen bir ihtiyacının sonucu olarak kullanılması gerektiğini yazıyor. MDN ayrıca modern tarayıcıların sesi kapatılmamış video için otomatik oynatmayı engellediğini hatırlatıyor; yani sesli otomatik oynayan bir video pratikte hiç oynamaz.
Ve GIF yerine kullanım dördüncüsüdür; otomatik oynatmanın neredeyse her zaman doğru olduğu tek yer. Kısa, döngülü bir animasyon istiyorsanız GIF yerine autoplay, muted ve loop ile sessiz bir video kullanın. Tam bu durum için web.dev, ffmpeg'in -an bayrağıyla ses akışını tamamen çıkarmayı öneriyor, çünkü ses akışını kaldırmak dosya boyutunu küçültür.
Kontrol listelerine girmeyen bir nokta: bu dört ayar, kötü kodlanmış bir dosya için hiçbir şey yapmaz. Çözünürlüğü gerçekten gösterilene indirin; telefonda 360 piksel genişliğindeki bir kareye 1080 piksellik bir dosya göndermeyi bu niteliklerin hiçbiri telafi etmez.
Dosya nerede dursun: kendi sunucunuz mu, bir platform mu?
İki seçim de geçerlidir ve iki farklı durum içindir; onları ayıran şey denetim ile yüktür.
Dosyayı kendiniz sunduğunuzda her şey sizindir: başkasının oynatıcısı yok, fazladan betik yok, logo ve sonraki video önerisi yok, ziyaretçi verisi başka bir yere gitmiyor. Bedeli de aynı ölçüde açık: bant genişliği ve trafik, HTML'inizi sunan sunucudan çıkar ve paylaşımlı barındırmadaki uzun bir video, bu kararın kırıldığı yerdir.
Bir platform kullandığınızda yükü onlar taşır ve uyarlanabilir akışı ile çoklu kalite sürümlerini bedavaya alırsınız. Karşılığında sayfaya kendi betiğiyle üçüncü bir köken katılır, oynatıcının görünümü size ait değildir ve o oynatıcının içinde olan her şey o hizmetin kurallarına uyar.
Kullandığımız kural basit: yaklaşık on saniyeden kısa, dekoratif ya da gösterim amaçlı her şey sessiz otomatik oynatmayla kendi dosyamız olarak gider; birinin oturup izlediği uzun her şey, bir poster görselinin ve tembel yüklemenin arkasında bir platforma gider, böylece oynatıcı betiği ancak tıklamadan sonra gelir.
Ve ikisini de vuran teknik bir tuzak: videoyu kendisi sayfa önbelleğinde olan bir sayfanın içine koymak. Video dosyası HTML önbelleğinden gelmez ve kendi yolu vardır; dolayısıyla bir aracın verdiği hız puanı videoyu hiç yansıtmıyor olabilir. Bu yüzden her değişiklikten sonra sayfayı tarayıcınızın geliştirici araçlarında kısıtlı ağla bir kez açın ve gerçekte neyin indiğine bakın.
Kendi dosyanız mı platform mu: denetime karşı yük
Dosya kendi sunucunuzda
- Sayfaya üçüncü taraf betiği ve üçüncü köken katılmaz
- Oynatıcının görünümü ve bitişte olan şey sizindir
- Bant genişliği HTML'i sunan sunucudan çıkar
- Kısa, sessiz, döngülü klipler için doğru
Bir platformda barındırma
- Fazladan iş olmadan uyarlanabilir akış ve kalite sürümleri
- Bant genişliği yükü sunucunuzdan kalkar
- Oynatıcı betiğini tembel yüklemeyle geciktirin
- Birinin oturup izlediği uzun video için doğru
Hiçbiri diğerinden iyi değildir; kararı zevk değil, videonun süresi ve barındırmanın kapasitesi verir.
90 puan ne demek ve neyi söylemez?
Lighthouse performans puanı 0 ile 100 arasındadır ve Chrome'un kendi belgeleri bantları şöyle koyuyor: 0 ile 49 zayıf, 50 ile 89 iyileştirme gerektiriyor, 90 ile 100 iyi. Hedeflediğimiz sayı yeşil bandın alt kenarı, yani 90.
Şimdi puanın söylemediği şey, ki puanın kendisinden daha önemlidir. Lighthouse bir laboratuvar testidir: tek bir koşu, benzetilmiş bir cihazda, benzetilmiş bir ağ üzerinden. Gerçek kullanıcılarınız farklı telefonlarda ve farklı ağlardadır ve bu, bu sayıda değil saha verisinde görünür.
Videoda bu boşluk her zamankinden geniştir, çünkü kullanıcı davranışı denklemin parçasıdır. Videosu preload="none" olan bir sayfa laboratuvarda mükemmel puan alır, çünkü kimse tıklamaz. Tıklayan kişinin gerçek deneyimi o puanın içinde hiç yoktur.
Bu yüzden puanı hedef değil, alarm olarak okuyun. 90'ın altındaysa yükleme yolunda bakılması gereken bir şey var demektir. 90'ın üstü yalnızca yükleme yolunun temiz olduğu anlamına gelir; videonun tıklamadan sonra başlaması ne kadar sürüyor, onu ayrıca ölçersiniz. Bütün bunların bir hız projesinin neresine oturduğunu görmek isterseniz site hızlandırma sayfası süreci anlatıyor.
Yapay zekayla hızlı yol
Buradaki hızlı yol, bir modele videoyu nasıl hafifletirim diye sormak değildir. Önce ffprobe ile sayfanın video dosyalarının gerçek envanterini çıkarmak, sonra o envanteri sayfanın bütçesiyle birlikte modele vererek dosya başına tek bir somut karar ve tek bir hazır komut almaktır. Doğrudan sormaktan farkı, modelin artık tahmin yürütmemesidir: sayılar gözünün önündedir.
- Envanter çıkarın. Sayfadaki her video dosyası için çözünürlüğü, süreyi, bit hızını ve boyutu ffprobe ile tek satırda okuyun. Bu tablo genellikle kararın yarısını kendi başına verir.
- Gerçek gösterim genişliğini ölçün. Tarayıcının geliştirici araçlarında video kutusunun mobil ve masaüstündeki genişliğine bakın. Hedef çözünürlüğü kaynak dosyanın ne olduğu değil, bu sayı belirler.
- Tabloyu ve bütçeyi aşağıdaki reçeteyle bir modele verin. Çıktı dosya başına bir satırdır: kalsın mı gitsin mi, hedef çözünürlük ve sesin gerekip gerekmediği.
- Kodlama komutlarını çalıştırın, posteri çıktı dosyasının kendisinden alın ve etiketi doğru poster ve preload ile yazın. Sonra sayfayı kısıtlı ağla açın ve gerçekte neyin indiğine bakın.
Kopyalamaya hazır şablon
# Dört komutun tamamı bu sunucuda ffmpeg 6.1.1 ile çalıştırıldı ve çıktıları denetlendi.
# 1. Envanter: her dosyanın çözünürlüğü, süresi, bit hızı ve boyutu
for f in *.mp4 *.mov; do
echo "== $f"
ffprobe -v error -show_entries stream=width,height,codec_name \
-show_entries format=duration,bit_rate,size -of default=nw=1 "$f"
done
# 2. Web sürümü. scale'den sonraki sayı hedef yüksekliktir; -2 genişliğin
# hesaplanmasını ve çift kalmasını sağlar. Yüksek crf daha küçük dosya
# ve daha düşük kalite demektir.
ffmpeg -i source.mov -vf "scale=-2:720" -c:v libx264 -crf 26 -preset slow \
-profile:v high -pix_fmt yuv420p -c:a aac -b:a 128k \
-movflags +faststart web.mp4
# 3. GIF yerine: sessiz ve daha hafif
ffmpeg -i source.mov -an -vf "scale=-2:720" -c:v libx264 -crf 28 \
-preset slow -pix_fmt yuv420p -movflags +faststart loop.mp4
# 4. Poster, kaynaktan değil çıktı dosyasından
ffmpeg -ss 2 -i web.mp4 -frames:v 1 -q:v 3 poster.jpg
# 5. Karar komutu, güçlü bir model için
Rol: web performans mühendisi. Aşağıdaki tablo bir sayfanın video envanteridir.
Sayfanın amacı: {örneğin satış açılış sayfası, 2,5 saniyenin altında LCP}
Video kutusunun gerçek genişliği: {örneğin mobilde 360px, masaüstünde 720px}
Her video ne yapıyor: {dosya başına tek satır}
ffprobe tablosu:
{1. adımın çıktısını buraya yapıştırın}
Dosya başına şu sütunlarla bir satır ver:
1. Dosya adı
2. Kalsın / kaldırılsın / sabit görselle değiştirilsin ve tek cümleyle neden
3. Kaynak dosyaya göre değil, gerçek kutu genişliğine göre hedef çözünürlük
4. Ses gerekli mi? Değilse -an yaz
5. Otomatik oynatma serbest mi? Yalnızca sessiz, döngülü ve kısaysa
6. preload değeri ve poster gerekip gerekmediği
Kurallar:
- Tabloda olmayan bir boyut ya da bit hızı yazma ve hiçbir sayıyı tahmin etme.
- Tasarrufu yüzdeyle vaat etme. Bir sayı veriyorsan tablonun hangi
satırından geldiğini söyle.
- Bir dosya sayfanın amacına hiç uymuyorsa ikinci sütuna kaldırılsın yaz ve
ayar arama.
- Sonunda, yükleme yoluna en çok baytı koyan dosyaları sırayla listele.
Çıktıya güvenmeden önce: Kendinizin bakması gereken iki şey var. Birincisi kalite: crf sayısı bir ayardır, garanti değildir; yoğun grenli ya da geçişli çekimlerde aynı sayı daha kötü sonuç verir. Çıktıyı küçük bir önizlemede değil, gerçekten görüneceği sayfada tam boyutunda izleyin. İkincisi ses: -an bayrağı sesi tamamen kaldırır ve geri alınamaz; o klibin sonradan seslendirmeye ihtiyacı olduğu anlaşılırsa kaynağa dönersiniz. Ve her zamanki gibi, modelin söylediği her tasarrufu kendi ölçümünüzle denetleyin, çünkü sayılan tek sayı gerçek dosyanızdan çıkandır.
Bu işte yapay zeka
Video optimizasyonunda yapay zekâ egzotik bir şey yapmaz ve iyi haber budur. Gerçekte yaptığı iş çeviridir: araç çıktısından karara ve karardan komuta. Sıkıştırmanın kendisini ücretsiz ve belirlenimci olan ffmpeg yapar ve hiçbir model onun yerini almaz. Duruşumuz: modeli yürütme adımı için değil, karar adımı için getirin; çünkü yürütmenin doğru aracı zaten var.
Gerçekten işe yarayan araçlar
- Gemini ffprobe çıktısı ve hız raporu üzerindeki ilk geçiş için ekonomiktir, çünkü bu iş mekanik ve denetlenebilirdir: tabloyu sıralamak ve en ağır dosyaları bulmak. İran, Google'ın desteklenen ülkeler listesinde yok; ödeme katmanı bu sitedeki yapay zekâ satın alma sayfasında.
- Claude Karar adımı için daha iyidir; cevabın bir dosyanın sayfada hiç bulunmaması olduğu yer. Doğru cevap kaldırmakken bir ayar önermeye daha az meyillidir. İran, Anthropic'in desteklenen ülkeler listesinde yok.
- ffmpeg Yapay zekâ değil ve bu listede bilerek duruyor: herkesin aradığı şeyi o yapar; ücretsiz, yerel ve yüklemesiz. Model yalnızca komut satırını yazar. web.dev belgeleri ses akışını çıkarmak için doğrudan bu araca işaret ediyor.
Nerede geri teper
Bu konudaki asıl risk, modellerin boyut azalması hakkında tam bir güvenle söylediği sayılardır. "Bu ayar boyutu yaklaşık yüzde kırk düşürür" cümlesi cevaba benzer ve sizin dosyanız üzerinde yapılmış hiçbir ölçümden gelmez; gerçek azalma o videonun içeriğine bağlıdır ve detaylı bir sahne ile durgun bir sahne tek bir ayardan çok farklı sonuçlar verir. Yukarıdaki reçetenin tabloda olmayan hiçbir sayının yazılmasına açıkça izin vermemesinin sebebi budur. İkinci risk, modelin kurduğu ve sessizce yanlış işi yapan ffmpeg komut satırlarıdır: o konumda etkisi olmayan bir bayrak, seçilen kodekle uyuşmayan bir filtre ya da amaç kopyalamakken yeniden kodlayan bir bayrak. Bunlar hata vermez; yalnızca doğru görünen bir şey üretir. Çıktı dosyasının boyutunu ve boyutlarını her zaman ffprobe ile denetleyin. Üçüncü risk mahremiyete döner: müşteri çekimlerini çevrimiçi bir sıkıştırma hizmetine yüklemek, kurgu dersinde anlatılan kararın aynısıdır ve burada da geçerlidir; oysa ffmpeg hiçbir yükleme gerektirmez.
Kaynaklar: web.dev: video performance Chrome for Developers: Lighthouse performance scoring Anthropic: is my data used for model training
Bu tavsiyenin sınırı
Bu ders sıradan sayfalardaki kısa video hakkındadır: bir demo, bir tanıtım, bir müşteri görüşü, döngülü bir animasyon. İşiniz uzun biçimli video, video kursları ya da ücretli içerikse bu başka bir sorundur ve cevapları da başkadır: uyarlanabilir akış, çoklu bit hızı paketleme ve erişim denetimi; hiçbiri bu sayfada yok. Bir dürüst sınır daha: buradaki hiçbir şey kimsenin izlemek istemediği bir videoyu kurtarmaz. Kimsenin oynatmadığı optimize edilmiş bir dosya hâlâ yanlış bir karardır, sadece daha hafiftir.
Kendi işimizden
Ciddi hiçbir rehberin neredeyse hiç uğraşmadığı bir ayar, oynatmanın ne kadar hızlı başladığında en büyük farkı yaratıyor: -movflags +faststart. Bir MP4 bloklardan kuruludur ve moov bloğu dosyanın haritasıdır; sonda durursa tarayıcı nasıl oynatacağını bilmek için dosyanın çoğunu çekmek zorunda kalır. Bu sunucuda, ffmpeg 6.1.1 ile iki çıktı ürettik ve blok sırasını okuduk: bayraksız sıra ftyp, free, mdat, moov çıktı; bayrakla ftyp, moov, free, mdat. Harita dosyanın sonundan başına taşındı. Bunu kendi dosyanızda otuz saniyede sınayabilirsiniz ve tıklamadan sonra geç başlayan bir videonun mutlaka ağır olmadığını orada öğrenirsiniz.
Gerçek devam soruları
Web için MP4 mü WebM mi daha iyi?
Yalnızca tek bir dosya üretiyorsanız H.264 ile MP4, en çok yerde sorunsuz oynayanıdır. Uyumluluğu kaybetmeden daha hafif istiyorsanız tek bir video etiketinin içine iki kaynak koyup tarayıcının tanıdığı ilkini almasını sağlayabilirsiniz. Aralarındaki fark kodek ayrıntısındadır ve video biçimleri ve kodekler dersi bunun yeridir.
Hero bölümünde arka plan videosu sorun mu?
Sorun, sayfadaki en ağır şeyi tam olarak LCP'nin ölçüldüğü yere koyması ve karşılığında genellikle hiçbir bilgi vermemesidir. Yine de gerekiyorsa en azından sessiz, kısa ve döngülü olsun, ses akışını çıkarın ve hiç oynamazsa sayfa boş kalmasın diye optimize edilmiş bir poster verin. Ama çoğu durumda dürüst cevap, iyi bir görselin aynı işi bedelin küçük bir kesriyle yaptığıdır.
Bir video nasıl tembel yüklenir?
Kendi dosyanız için işin çoğunu preload="none" yapar: biri oynatmayı başlatana kadar tarayıcı videodan hiçbir şey getirmez. Bir platformdaki video içinse mesele dosya değil, oynatıcı betiğidir; olağan yaklaşım, oynatıcıyı doğrudan gömmek yerine bir poster görseli koymak ve oynatıcıyı ancak o görsele tıklandıktan sonra yüklemektir.