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 yok1
: HAVE_METADATA - Meta veriler var2
: HAVE_CURRENT_DATA - Mevcut kare verileri var3
: HAVE_FUTURE_DATA - Gelecek kare verileri var4
: HAVE_ENOUGH_DATA - Yeterli veri var
networkState()
Ağ durumunu alır.
const networkState = player.networkState();
Dönüş değerleri:
0
: NETWORK_EMPTY - Başlangıç durumu1
: NETWORK_IDLE - Boşta durum2
: NETWORK_LOADING - Yükleniyor3
: 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.