Panduan

YouTube IFrame API: panduan praktis

Diperbarui September 2026 · 19 menit baca

Poin utama

  • Muat https://www.youtube.com/iframe_api sekali saja dan buat pemutar di dalam onYouTubeIframeAPIReady.

  • Kontrol pemutaran dengan playVideo, pauseVideo, seekTo, mute, dan loadVideoById.

  • Tanggapi onStateChange dan onError untuk melacak pemutaran dan melewati video yang rusak.

  • IFrame API tidak memerlukan kunci; menampilkan daftar video saluran atau playlist memerlukan YouTube Data API dengan kunci dan kuota.

Muat API dan buat pemutar

<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>

Metode yang umum digunakan

Metode
Fungsi
playVideo() / pauseVideo()
Memutar dan menjeda
seekTo(seconds)
Melompat ke waktu tertentu
mute() / unMute()
Mengatur suara
loadVideoById(id)
Berpindah video
getCurrentTime()
Posisi saat ini

playVideo() / pauseVideo()

Fungsi

Memutar dan menjeda

seekTo(seconds)

Fungsi

Melompat ke waktu tertentu

mute() / unMute()

Fungsi

Mengatur suara

loadVideoById(id)

Fungsi

Berpindah video

getCurrentTime()

Fungsi

Posisi saat ini

Event

onReady, onStateChange (memutar, dijeda, selesai), onError. Gunakan untuk melacak jumlah tayangan atau memulai video berikutnya.

Kapan Anda tidak memerlukan API

Untuk galeri, playlist, atau feed saluran di halaman pemasaran, API berarti banyak kode yang harus dipelihara.

Cara API dimuat

IFrame API hanyalah satu skrip. Setelah selesai dimuat, skrip ini memanggil fungsi global bernama onYouTubeIframeAPIReady — buat pemutar Anda di sana. Muat skrip sekali per halaman, meskipun Anda memiliki beberapa pemutar, dan buat setiap pemutar pada elemennya sendiri.

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 }
    });
  });
}

Status pemutar

Nilai
Konstanta
Arti
-1
—
Belum dimulai
0
YT.PlayerState.ENDED
Selesai
1
YT.PlayerState.PLAYING
Sedang diputar
2
YT.PlayerState.PAUSED
Dijeda
3
YT.PlayerState.BUFFERING
Memuat (buffering)
5
YT.PlayerState.CUED
Video siap diputar

-1

Konstanta

—

Arti

Belum dimulai

0

Konstanta

YT.PlayerState.ENDED

Arti

Selesai

1

Konstanta

YT.PlayerState.PLAYING

Arti

Sedang diputar

2

Konstanta

YT.PlayerState.PAUSED

Arti

Dijeda

3

Konstanta

YT.PlayerState.BUFFERING

Arti

Memuat (buffering)

5

Konstanta

YT.PlayerState.CUED

Arti

Video siap diputar

Dengarkan onStateChange dan bandingkan event.data dengan konstanta ini.

Buat tombol putar kustom

<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>

Jika Anda menyembunyikan kontrol YouTube, Anda bertanggung jawab menyediakan kontrol yang aksesibel — dukungan keyboard dan label.

Lacak pemutaran dan video yang selesai ditonton

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 });
  }
}

Tangani error

Kode
Arti
Yang perlu dilakukan
2
Parameter tidak valid (sering kali ID video salah)
Periksa ID
5
Error pemutar HTML5
Coba lagi atau tampilkan alternatif
100
Video tidak ditemukan atau bersifat pribadi
Hapus dari daftar
101 / 150
Pemilik tidak mengizinkan penyematan
Tautkan ke YouTube

2

Arti

Parameter tidak valid (sering kali ID video salah)

Yang perlu dilakukan

Periksa ID

5

Arti

Error pemutar HTML5

Yang perlu dilakukan

Coba lagi atau tampilkan alternatif

100

Arti

Video tidak ditemukan atau bersifat pribadi

Yang perlu dilakukan

Hapus dari daftar

101 / 150

Arti

Pemilik tidak mengizinkan penyematan

Yang perlu dilakukan

Tautkan ke YouTube

Dengarkan onError dan lewati ke video berikutnya dalam daftar Anda saat terjadi error.

IFrame API vs. YouTube Data API

IFrame API mengontrol pemutaran video yang sudah Anda ketahui. Untuk menampilkan daftar unggahan sebuah saluran atau video dalam playlist, Anda memerlukan YouTube Data API yang terpisah — dengan kunci API, batas kuota harian, dan caching di sisi Anda. Bagian inilah yang paling sering diremehkan pada galeri buatan sendiri.

Contoh lengkap: playlist video produk

Kasus penggunaan yang umum: satu pemutar, daftar video produk Anda di sebelahnya, dan analitik untuk setiap pemutaran. Buat pemutar sekali, tampilkan daftar Anda sebagai tombol dengan atribut data-id, lalu panggil loadVideoById saat diklik. Pada ENDED, muat ID berikutnya dalam daftar agar playlist terus berjalan. Kirim event video_start dan video_complete ke analitik beserta judul videonya. Semua yang lain — thumbnail, judul, urutan video — berasal dari data Anda sendiri, yang persis menjadi bagian yang disediakan oleh Data API atau widget galeri.

Pertanyaan yang sering diajukan

Dokumentasi resmi

Terkait

Generator kode embed YouTube

Tempel tautan YouTube apa pun dan dapatkan kode embed responsif gratis dalam hitungan detik.Generator kode embed YouTube

Pemutar video YouTube untuk website Anda

Tampilkan pemutar YouTube di website Anda yang tampil menyatu dengan situs — lengkap dengan galeri atau playlist video lainnya.Pemutar video YouTube untuk website Anda