Rehber

HTML video etiketi: örneklerle eksiksiz kılavuz

Güncellendi: Eylül 2026 · 26 dk okuma

Önemli noktalar

  • <video> öğesini MP4 (H.264/AAC) kaynağıyla kullanın; daha küçük dosyalar istiyorsanız önce WebM ekleyin.

  • controls, bir poster ve preload="metadata" ekleyin; otomatik oynatmayı yalnızca sessiz ve satır içi olduğunda kullanın.

  • Alanı aspect-ratio ile ayırın ve her düzene uymak için object-fit kullanın.

  • Erişilebilirlik için <track> ile altyazı ekleyin.

  • YouTube veya Vimeo için onların iframe oynatıcılarını kullanın; çok sayıda video için galeri kullanın.

Temel örnek

<video controls width="640" poster="poster.jpg">
  <source src="movie.webm" type="video/webm">
  <source src="movie.mp4" type="video/mp4">
  Your browser does not support HTML5 video.
</video>

Öznitelikler

Öznitelik
Ne yapar
controls
Oynat, ses ve tam ekran denetimlerini gösterir
autoplay
Oynatmayı otomatik başlatır (muted gerekir)
muted
Sessiz başlar
loop
Bittiğinde yeniden oynatır
playsinline
iPhone'da satır içi oynatır
poster
Oynatmadan önce gösterilen görsel
preload
none / metadata / auto: önceden ne kadarının yükleneceği
width / height
Doğal boyut (duyarlılık için CSS kullanın)

controls

Ne yapar

Oynat, ses ve tam ekran denetimlerini gösterir

autoplay

Ne yapar

Oynatmayı otomatik başlatır (muted gerekir)

muted

Ne yapar

Sessiz başlar

loop

Ne yapar

Bittiğinde yeniden oynatır

playsinline

Ne yapar

iPhone'da satır içi oynatır

poster

Ne yapar

Oynatmadan önce gösterilen görsel

preload

Ne yapar

none / metadata / auto: önceden ne kadarının yükleneceği

width / height

Ne yapar

Doğal boyut (duyarlılık için CSS kullanın)

Duyarlı video

video{width:100%;height:auto;aspect-ratio:16/9}

Altyazılar

<video controls>
  <source src="movie.mp4" type="video/mp4">
  <track kind="captions" src="captions.vtt" srclang="en" label="English" default>
</video>

YouTube gömmek video etiketi değildir

YouTube ve Vimeo videoları <video> ile oynatılamaz; onların iframe oynatıcılarını kullanın. YouTube gömme kodu oluşturucumuza bakın.

Biçimler ve tarayıcı desteği

Biçim
Destek
Ne için kullanılır
MP4 (H.264 + AAC)
Tüm modern tarayıcılar
Varsayılan seçim
WebM (VP9 / AV1)
Bazı eski Safari sürümleri dışında tüm modern tarayıcılar
Daha küçük dosyalar: ek bir <source> olarak sunun
HLS (.m3u8)
Safari'de yerel; diğerleri hls.js gerektirir
Uzun videolar ve canlı yayınlar

MP4 (H.264 + AAC)

Destek

Tüm modern tarayıcılar

Ne için kullanılır

Varsayılan seçim

WebM (VP9 / AV1)

Destek

Bazı eski Safari sürümleri dışında tüm modern tarayıcılar

Ne için kullanılır

Daha küçük dosyalar: ek bir <source> olarak sunun

HLS (.m3u8)

Destek

Safari'de yerel; diğerleri hls.js gerektirir

Ne için kullanılır

Uzun videolar ve canlı yayınlar

Videoyu JavaScript ile kontrol etme

const v = document.querySelector("video");
v.play();            // returns a Promise
v.pause();
v.currentTime = 30;  // seek to 0:30
v.muted = true;
v.addEventListener("ended", () => console.log("done"));
v.addEventListener("timeupdate", () => console.log(v.currentTime));

play() işlevinin döndürdüğü Promise'i ele alın; tarayıcı oynatmayı engellediğinde reddedilir.

Tembel yükleme ve performans

  • preload="none" veya "metadata" ilk sayfayı hafif tutar.

  • Bir poster görseli anında görünür.

  • iframe'lerde loading="lazy" kullanın; <video> için src'yi görünür olunca ayarlayın.

  • Düzen kaymasını önlemek için aspect-ratio ile alan ayırın.

Erişilebilirlik kontrol listesi

  • <track kind="captions"> ile altyazı ekleyin.

  • Kendi erişilebilir denetimlerinizi sağlamadıkça controls'ü bırakın.

  • Asla sesli otomatik oynatmayın.

  • Önemli videolar için bir döküm sağlayın.

Sık karşılaşılan sorunlar

  1. Video iPhone'da oynamıyor

    Otomatik oynatma için playsinline ve muted ekleyin; codec'in H.264 olduğunu kontrol edin.

  2. Oynatmadan önce siyah ekran

    Bir poster görseli ekleyin.

  3. Mobilde yanlış boyut

    width:100%; height:auto; aspect-ratio kullanın.

  4. Büyük dosya yavaş yükleniyor

    Sıkıştırın veya bir video platformundan akıtın.

Tarayıcı kaynağı nasıl seçer

Tarayıcı <source> öğelerini yukarıdan aşağıya okur ve desteklediği ilkini oynatır. Bu yüzden daha küçük, daha modern biçimi (WebM) önce, evrensel olarak desteklenen biçimi (MP4) ikinci sırada listelersiniz. type özniteliği, tarayıcının oynatamayacağı dosyaları indirmeden atlamasını sağlar; her zaman ekleyin. Kaynakların ardından <video> içine yazılan metni yalnızca videoyu hiç desteklemeyen tarayıcılar gösterir.

<video controls preload="metadata" poster="poster.jpg">
  <source src="clip.webm" type='video/webm; codecs="vp9, opus"'>
  <source src="clip.mp4"  type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
  <a href="clip.mp4">Download the video</a>
</video>

Videoyu her düzene sığdırma

Videonun kutusunu nasıl doldurduğunu kontrol etmek için CSS kullanın. object-fit: cover alanı doldurur ve kenarları kırpar; kahraman bölümleri için idealdir. object-fit: contain tüm kareyi bantlarla gösterir. Dosya yüklenmeden önce yer ayırmak ve düzen kaymasını önlemek için aspect-ratio ile birleştirin.

.video-box{aspect-ratio:16/9;width:100%}
.video-box video{width:100%;height:100%;object-fit:cover}

/* vertical clips */
.video-vertical{aspect-ratio:9/16;max-width:360px}

Resim içinde resim ve tam ekran

Modern tarayıcılar, JavaScript'ten bir videoyu yüzen bir pencereye veya tam ekrana taşımanıza izin verir; ikisi de tıklama gibi bir kullanıcı hareketi gerektirir.

const v = document.querySelector("video");

pipButton.onclick = async () => {
  if (document.pictureInPictureElement) await document.exitPictureInPicture();
  else await v.requestPictureInPicture();
};

fullButton.onclick = () => v.requestFullscreen();

Tarayıcının kendi PiP düğmesini istemiyorsanız öğeye disablepictureinpicture ekleyin.

Video etkileşimini izleme

Video öğesi, analiz aracınıza gönderebileceğiniz olaylar tetikler. Başlangıçları, tamamlamaları ve ilerleme kilometre taşlarını izleyin; saniyede birkaç kez tetiklenen her timeupdate'i değil.

const v = document.querySelector("video");
const sent = new Set();
const track = (name) => window.gtag && gtag("event", name, { video_title: v.dataset.title });

v.addEventListener("play", () => track("video_start"), { once: true });
v.addEventListener("ended", () => track("video_complete"));
v.addEventListener("timeupdate", () => {
  const p = Math.floor((v.currentTime / v.duration) * 4) * 25; // 25, 50, 75
  if (p && p < 100 && !sent.has(p)) { sent.add(p); track("video_progress_" + p); }
});

Video etiketi, iframe veya galeri?

Video etiketi, kendi kısa dosyalarınız için doğru araçtır: ürün döngüleri, kahraman arka planları, CDN'de barındırdığınız kısa açıklayıcı videolar. YouTube veya Vimeo'daki videolar için onların iframe oynatıcılarını kullanın; akışı, kalite değişimini ve altyazıları onlar yönetir. Çok sayıda videoya, kendini güncelleyen akışlara veya platform karışımına ihtiyacınız olduğunda, bir galeri widget'ı oynatma listelerini, açılır pencereleri ve düzenleri elle oluşturmaktan sizi kurtarır.

Sık sorulan sorular

Resmi dokümantasyon

İlgili

Video gömme kodu oluşturucu

Her yerde barındırılan bir video için ücretsiz gömme kodu alın: MP4 dosyası, Google Drive, Dropbox, Loom veya Wistia.Video gömme kodu oluşturucu

Video.js, react-player, hls.js ve Plyr karşılaştırması

Video.js eklenti açısından zengin, eksiksiz bir oynatıcıdır; Plyr hafif ve şık bir oynatıcıdır; react-player React için birçok kaynağı sarmalar; hls.js, HLS akışını bunu desteklemeyen tarayıcılara getirir.Video.js, react-player, hls.js ve Plyr karşılaştırması