Rehber

YouTube IFrame API: uygulamalı rehber

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

Öne çıkanlar

  • https://www.youtube.com/iframe_api adresini bir kez yükleyin ve oynatıcıları onYouTubeIframeAPIReady içinde oluşturun.

  • Oynatmayı playVideo, pauseVideo, seekTo, mute ve loadVideoById ile kontrol edin.

  • Oynatmaları izlemek ve bozuk videoları atlamak için onStateChange ve onError olaylarını dinleyin.

  • IFrame API anahtar gerektirmez; bir kanalın veya oynatma listesinin videolarını listelemek için anahtar ve kota gerektiren YouTube Data API gerekir.

API'yi yükleyin ve oynatıcı oluşturun

<div id="player"></div>
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  let player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player("player", {
      videoId: "VIDEO_ID",
      playerVars: { playsinline: 1, rel: 0 },
      events: { onReady: e => e.target.mute().playVideo() }
    });
  }
</script>

Sık kullanılan yöntemler

Yöntem
Ne yapar
playVideo() / pauseVideo()
Oynatır ve duraklatır
seekTo(seconds)
Belirli bir zamana atlar
mute() / unMute()
Ses kontrolü
loadVideoById(id)
Videoyu değiştirir
getCurrentTime()
Geçerli konum

playVideo() / pauseVideo()

Ne yapar

Oynatır ve duraklatır

seekTo(seconds)

Ne yapar

Belirli bir zamana atlar

mute() / unMute()

Ne yapar

Ses kontrolü

loadVideoById(id)

Ne yapar

Videoyu değiştirir

getCurrentTime()

Ne yapar

Geçerli konum

Olaylar

onReady, onStateChange (oynatılıyor, duraklatıldı, bitti), onError. Bunları görüntülemeleri izlemek veya sonraki videoyu başlatmak için kullanın.

API'ye ihtiyaç duymadığınız durumlar

Pazarlama sayfalarındaki bir galeri, oynatma listesi veya kanal akışı için API, bakımı zor ve çok kod gerektiren bir çözümdür.

API nasıl yüklenir

IFrame API tek bir betiktir. Yüklenmesi bittiğinde onYouTubeIframeAPIReady adlı genel bir işlevi çağırır; oynatıcılarınızı burada oluşturun. Birden fazla oynatıcınız olsa bile betiği sayfa başına yalnızca bir kez yükleyin ve her oynatıcıyı kendi öğesi üzerinde oluşturun.

const players = {};
function onYouTubeIframeAPIReady() {
  document.querySelectorAll("[data-yt]").forEach((el) => {
    players[el.id] = new YT.Player(el.id, {
      videoId: el.dataset.yt,
      playerVars: { rel: 0, playsinline: 1 }
    });
  });
}

Oynatıcı durumları

Değer
Sabit
Anlamı
-1
—
Başlatılmadı
0
YT.PlayerState.ENDED
Bitti
1
YT.PlayerState.PLAYING
Oynatılıyor
2
YT.PlayerState.PAUSED
Duraklatıldı
3
YT.PlayerState.BUFFERING
Arabelleğe alınıyor
5
YT.PlayerState.CUED
Video hazır

-1

Sabit

—

Anlamı

Başlatılmadı

0

Sabit

YT.PlayerState.ENDED

Anlamı

Bitti

1

Sabit

YT.PlayerState.PLAYING

Anlamı

Oynatılıyor

2

Sabit

YT.PlayerState.PAUSED

Anlamı

Duraklatıldı

3

Sabit

YT.PlayerState.BUFFERING

Anlamı

Arabelleğe alınıyor

5

Sabit

YT.PlayerState.CUED

Anlamı

Video hazır

onStateChange olayını dinleyin ve event.data değerini bu sabitlerle karşılaştırın.

Özel bir oynatma düğmesi oluşturun

<div id="player"></div>
<button id="play">Play</button>
<script>
  let player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player("player", { videoId: "VIDEO_ID", playerVars: { controls: 0 } });
  }
  document.getElementById("play").onclick = () => {
    const s = player.getPlayerState();
    s === YT.PlayerState.PLAYING ? player.pauseVideo() : player.playVideo();
  };
</script>

YouTube'un kontrollerini gizlediğinizde, klavye desteği ve etiketler dahil erişilebilir kontrolleri sağlamak sizin sorumluluğunuzdadır.

Oynatmaları ve tamamlanmaları izleyin

events: {
  onStateChange: (e) => {
    const title = e.target.getVideoData().title;
    if (e.data === YT.PlayerState.PLAYING) gtag("event", "video_start", { video_title: title });
    if (e.data === YT.PlayerState.ENDED)   gtag("event", "video_complete", { video_title: title });
  }
}

Hataları yönetin

Kod
Anlamı
Ne yapmalı
2
Geçersiz parametre (genellikle yanlış video kimliği)
Kimliği kontrol edin
5
HTML5 oynatıcı hatası
Yeniden deneyin veya yedek içerik gösterin
100
Video bulunamadı veya gizli
Listeden kaldırın
101 / 150
Sahibi gömmeye izin vermiyor
Bunun yerine YouTube'a bağlantı verin

2

Anlamı

Geçersiz parametre (genellikle yanlış video kimliği)

Ne yapmalı

Kimliği kontrol edin

5

Anlamı

HTML5 oynatıcı hatası

Ne yapmalı

Yeniden deneyin veya yedek içerik gösterin

100

Anlamı

Video bulunamadı veya gizli

Ne yapmalı

Listeden kaldırın

101 / 150

Anlamı

Sahibi gömmeye izin vermiyor

Ne yapmalı

Bunun yerine YouTube'a bağlantı verin

onError olayını dinleyin ve hata oluştuğunda listenizdeki bir sonraki videoya geçin.

IFrame API ile YouTube Data API karşılaştırması

IFrame API, önceden bildiğiniz videoların oynatılmasını kontrol eder. Bir kanalın yüklemelerini veya bir oynatma listesinin videolarını listelemek için ayrı bir YouTube Data API gerekir; bunun için API anahtarı, günlük kota sınırları ve sizin tarafınızda önbellekleme gerekir. Özel galerilerin çoğunun hafife aldığı kısım budur.

Eksiksiz bir örnek: ürün videolarından oluşan oynatma listesi

Yaygın bir kullanım senaryosu: tek bir oynatıcı, yanında ürün videolarınızın listesi ve her oynatma için analiz. Oynatıcıyı bir kez oluşturun, listenizi data-id öznitelikli düğmeler olarak oluşturun ve tıklamada loadVideoById çağırın. ENDED olduğunda oynatma listesinin devam etmesi için listenizdeki sonraki kimliği yükleyin. video_start ve video_complete olaylarını video başlığıyla birlikte analiz aracınıza gönderin. Geri kalan her şey (küçük resimler, başlıklar, videoların sırası) kendi verilerinizden gelir; Data API veya bir galeri widget'ı tam olarak bu kısmı sağlar.

Sık sorulan sorular

Resmi dokümantasyon

İlgili

YouTube gömme kodu oluşturucu

Herhangi bir YouTube bağlantısını yapıştırın ve saniyeler içinde ücretsiz, duyarlı bir gömme kodu alın.YouTube gömme kodu oluşturucu

Web siteniz için YouTube video oynatıcısı

Web sitenize, sitenizin bir parçası gibi görünen bir YouTube oynatıcısı ekleyin; yanında daha fazla video için galeri veya oynatma listesi de olsun.Web siteniz için YouTube video oynatıcısı