w

API Referansı

M3U8 Online Player'ın tam API referansı.

Player API

Başlatma

Player Yapıcısı

const player = new M3U8Player(options);

Parametreler:

  • options (Object): Player yapılandırma seçenekleri

Yapılandırma seçenekleri:

const options = {
  container: '#player', // Player konteyner seçici
  autoplay: false, // Otomatik oynatma
  muted: true, // Sessiz durum
  preload: 'metadata', // Ön yükleme ayarı
  width: '100%', // Player genişliği
  height: 'auto', // Player yüksekliği
  controls: true, // Kontrolleri göster
  fluid: true, // Duyarlı
  responsive: true, // Duyarlı destek
  playbackRates: [0.5, 1, 1.25, 1.5, 2], // Oynatma hızları
  defaultPlaybackRate: 1, // Varsayılan oynatma hızı
  language: 'tr', // Dil ayarı
  techOrder: ['html5'], // Teknoloji öncelik sırası
  html5: {
    vhs: {
      overrideNative: true, // Yerel HLS'yi geçersiz kıl
      enableLowInitialPlaylist: true,
      smoothQualityChange: true,
      handlePartialData: true,
    },
  },
};

Metodlar

load()

Bir akışı yükler.

player.load(url);

Parametreler:

  • url (String): M3U8 akışının URL'si

Dönüş değeri:

  • Promise: Yükleme tamamlanma Promise'i

Örnek:

try {
  await player.load('https://example.com/stream.m3u8');
  console.log('Akış başarıyla yüklendi');
} catch (error) {
  console.error('Akış yükleme hatası:', error);
}

play()

Oynatmayı başlatır.

player.play();

Dönüş değeri:

  • Promise: Oynatma başlatma Promise'i

pause()

Oynatmayı duraklatır.

player.pause();

currentTime()

Mevcut oynatma zamanını alır veya ayarlar.

// Mevcut zamanı al
const currentTime = player.currentTime();

// Zamanı ayarla
player.currentTime(120); // 2 dakikaya ayarla

duration()

Akışın toplam süresini alır.

const duration = player.duration();

volume()

Sesi alır veya ayarlar.

// Sesi al (0.0 - 1.0)
const volume = player.volume();

// Sesi ayarla
player.volume(0.5); // %50'ye ayarla

muted()

Sessiz durumunu alır veya ayarlar.

// Sessiz durumunu al
const isMuted = player.muted();

// Sessiz durumunu ayarla
player.muted(true); // Sessiz
player.muted(false); // Sessiz değil

paused()

Duraklatma durumunu alır.

const isPaused = player.paused();

ended()

Bitiş durumunu alır.

const isEnded = player.ended();

readyState()

Player'ın hazır durumunu alır.

const readyState = player.readyState();

Dönüş değerleri:

  • 0: HAVE_NOTHING - Bilgi yok
  • 1: HAVE_METADATA - Meta veriler var
  • 2: HAVE_CURRENT_DATA - Mevcut kare verileri var
  • 3: HAVE_FUTURE_DATA - Gelecek kare verileri var
  • 4: HAVE_ENOUGH_DATA - Yeterli veri var

networkState()

Ağ durumunu alır.

const networkState = player.networkState();

Dönüş değerleri:

  • 0: NETWORK_EMPTY - Başlangıç durumu
  • 1: NETWORK_IDLE - Boşta durum
  • 2: NETWORK_LOADING - Yükleniyor
  • 3: NETWORK_NO_SOURCE - Kaynak yok

Olaylar

loadstart

Akış yüklemesi başladığında tetiklenir.

player.on('loadstart', () => {
  console.log('Akış yüklemesi başladı');
});

loadedmetadata

Meta veriler yüklendiğinde tetiklenir.

player.on('loadedmetadata', () => {
  console.log('Meta veriler yüklendi');
  console.log('Toplam süre:', player.duration());
});

loadeddata

İlk kare yüklendiğinde tetiklenir.

player.on('loadeddata', () => {
  console.log('İlk kare yüklendi');
});

canplay

Oynatma mümkün olduğunda tetiklenir.

player.on('canplay', () => {
  console.log('Oynatma hazır');
});

canplaythrough

Buffering tamamlandığında ve sonuna kadar oynatma mümkün olduğunda tetiklenir.

player.on('canplaythrough', () => {
  console.log('Sonuna kadar oynatma hazır');
});

play

Oynatma başladığında tetiklenir.

player.on('play', () => {
  console.log('Oynatma başladı');
});

pause

Oynatma duraklatıldığında tetiklenir.

player.on('pause', () => {
  console.log('Oynatma duraklatıldı');
});

ended

Oynatma bittiğinde tetiklenir.

player.on('ended', () => {
  console.log('Oynatma bitti');
});

timeupdate

Oynatma zamanı güncellendiğinde tetiklenir.

player.on('timeupdate', () => {
  const currentTime = player.currentTime();
  const duration = player.duration();
  const progress = (currentTime / duration) * 100;
  console.log(`İlerleme: ${progress.toFixed(1)}%`);
});

volumechange

Ses değiştiğinde tetiklenir.

player.on('volumechange', () => {
  console.log('Ses:', player.volume());
  console.log('Sessiz:', player.muted());
});

error

Hata oluştuğunda tetiklenir.

player.on('error', (error) => {
  console.error('Player hatası:', error);
});

HLS API

Özellikler

hls

HLS örneğine erişir.

const hls = player.hls;

hls.levels

Mevcut kalite seviyelerini alır.

const levels = player.hls.levels;
console.log('Mevcut kalite seviyeleri:', levels);

hls.currentLevel

Mevcut kalite seviyesini alır veya ayarlar.

// Mevcut seviyeyi al
const currentLevel = player.hls.currentLevel;

// Seviyeyi ayarla
player.hls.currentLevel = 2; // Üçüncü seviyeye ayarla

hls.nextLevel

Sonraki kalite seviyesini alır veya ayarlar.

const nextLevel = player.hls.nextLevel;

hls.loadLevel

Yüklenen kalite seviyesini alır.

const loadLevel = player.hls.loadLevel;

hls.bandwidth

Tahmini bant genişliğini alır.

const bandwidth = player.hls.bandwidth;
console.log('Tahmini bant genişliği:', bandwidth, 'bps');

hls.startLevel

Başlangıç kalite seviyesini alır veya ayarlar.

// Başlangıç seviyesini ayarla
player.hls.startLevel = 1;

Metodlar

hls.startLoad()

HLS yüklemeyi başlatır.

player.hls.startLoad();

hls.stopLoad()

HLS yüklemeyi durdurur.

player.hls.stopLoad();

hls.swapAudioCodec()

Ses codec'ini değiştirir.

player.hls.swapAudioCodec();

hls.recoverMediaError()

Medya hatasından kurtulmaya çalışır.

player.hls.recoverMediaError();

Olaylar

hlsEvent

HLS ile ilgili olayları izler.

player.on('hlsEvent', (event, data) => {
  console.log('HLS olayı:', event, data);
});

levelLoaded

Kalite seviyesi yüklendiğinde tetiklenir.

player.on('levelLoaded', (event, data) => {
  console.log('Kalite seviyesi yüklendi:', data);
});

levelSwitched

Kalite seviyesi değiştiğinde tetiklenir.

player.on('levelSwitched', (event, data) => {
  console.log('Kalite seviyesi değişti:', data);
});

fragLoaded

Parça yüklendiğinde tetiklenir.

player.on('fragLoaded', (event, data) => {
  console.log('Parça yüklendi:', data);
});

Olay API

Olay Dinleyicileri Ekleme

on()

Bir olay dinleyicisi ekler.

player.on('eventName', callback);

Parametreler:

  • eventName (String): Olay adı
  • callback (Function): Geri çağırma fonksiyonu

off()

Bir olay dinleyicisini kaldırır.

player.off('eventName', callback);

one()

Sadece bir kez çalışan bir olay dinleyicisi ekler.

player.one('eventName', callback);

trigger()

Bir olayı manuel olarak tetikler.

player.trigger('customEvent', data);

Özel Olaylar

qualitychange

Kalite değiştiğinde tetiklenir.

player.on('qualitychange', (event, data) => {
  console.log('Kalite değişimi:', {
    from: data.from,
    to: data.to,
    reason: data.reason,
  });
});

bufferwarning

Buffer düşük olduğunda tetiklenir.

player.on('bufferwarning', (event, data) => {
  console.log('Buffer uyarısı:', data);
});

Hata İşleme

Hata Türleri

MediaError

Medya ile ilgili hata.

player.on('error', (error) => {
  if (error.code === 1) {
    console.log('Medya hatası: İptal edildi');
  } else if (error.code === 2) {
    console.log('Medya hatası: Ağ');
  } else if (error.code === 3) {
    console.log('Medya hatası: Kod çözme');
  } else if (error.code === 4) {
    console.log('Medya hatası: Desteklenmeyen kaynak');
  }
});

HlsError

HLS ile ilgili hata.

player.on('error', (error) => {
  if (error.type === 'networkError') {
    console.log('Ağ hatası');
  } else if (error.type === 'mediaError') {
    console.log('Medya hatası');
  }
});

Hata Kurtarma

Otomatik Kurtarma

Player otomatik olarak hatalardan kurtulmaya çalışır.

player.on('error', (error) => {
  console.log('Hata oluştu:', error);
  // Player otomatik olarak kurtulmaya çalışır
});

Manuel Kurtarma

Hatalardan manuel olarak kurtulmaya çalışabilirsiniz.

player.on('error', (error) => {
  if (error.type === 'mediaError') {
    // Medya hataları için manuel kurtarma dene
    player.hls.recoverMediaError();
  }
});

Yardımcı Fonksiyonlar

Zaman Formatlama

formatTime()

Saniyeleri zaman formatına dönüştürür.

function formatTime(seconds) {
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = Math.floor(seconds % 60);

  if (hours > 0) {
    return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
  } else {
    return `${minutes}:${secs.toString().padStart(2, '0')}`;
  }
}

// Kullanım örneği
const currentTime = player.currentTime();
console.log('Mevcut zaman:', formatTime(currentTime));

Kalite Seviyesi Yönetimi

getQualityLevels()

Mevcut kalite seviyelerini alır.

function getQualityLevels() {
  return player.hls.levels.map((level, index) => ({
    index: index,
    height: level.height,
    width: level.width,
    bitrate: level.bitrate,
    name: `${level.height}p`,
  }));
}

const qualityLevels = getQualityLevels();
console.log('Mevcut kalite seviyeleri:', qualityLevels);

setQualityLevel()

Kalite seviyesini ayarlar.

function setQualityLevel(levelIndex) {
  if (levelIndex >= 0 && levelIndex < player.hls.levels.length) {
    player.hls.currentLevel = levelIndex;
    console.log(`Kalite seviyesi ${levelIndex} olarak ayarlandı`);
  } else {
    console.error('Geçersiz kalite seviyesi');
  }
}

Bu API referansı, M3U8 Online Player'ın tüm özelliklerinden yararlanmanızı sağlar.

Bu sayfa yardımcı oldu mu?