Gelişmiş Özellikler
M3U8 Online Player'ın gelişmiş özellikleri ve yapılandırma seçeneklerinin ayrıntılı açıklaması.
Player Yapılandırması
Temel Yapılandırma Seçenekleri
Player, akış deneyimini özelleştirmek için çeşitli yapılandırma seçenekleri sunar:
Otomatik Oynatma Yapılandırması
const playerConfig = {
autoplay: false, // Otomatik oynatmayı devre dışı bırak
muted: true, // Otomatik oynatma sırasında sessiz
preload: 'metadata', // Ön yükleme yapılandırması
};
Kalite Yapılandırması
const qualityConfig = {
defaultQuality: 'auto', // Varsayılan kalite
qualityLevels: [
// Mevcut kalite seviyeleri
{ name: '1080p', height: 1080 },
{ name: '720p', height: 720 },
{ name: '480p', height: 480 },
],
};
Gelişmiş Yapılandırma
Buffer Yapılandırması
const bufferConfig = {
bufferSize: 30, // Buffer boyutu (saniye)
maxBufferLength: 60, // Maksimum buffer uzunluğu
minBufferLength: 5, // Minimum buffer uzunluğu
bufferForPlayback: 10, // Oynatma öncesi buffer
};
Ağ Yapılandırması
const networkConfig = {
timeout: 10000, // Zaman aşımı (milisaniye)
retryAttempts: 3, // Yeniden deneme sayısı
retryDelay: 1000, // Yeniden deneme gecikmesi
maxBandwidth: 5000000, // Maksimum bant genişliği (bps)
};
Akış Analizi
Gerçek Zamanlı İstatistikler
Player, ayrıntılı akış istatistikleri sağlar:
Performans Metrikleri
// İstatistik bilgilerini al
const stats = player.getStats();
console.log({
bitrate: stats.bitrate, // Mevcut bit hızı
resolution: stats.resolution, // Mevcut çözünürlük
fps: stats.fps, // Kare hızı
droppedFrames: stats.droppedFrames, // Düşen kareler
bufferHealth: stats.bufferHealth, // Buffer sağlığı
});
Ağ İstatistikleri
const networkStats = player.getNetworkStats();
console.log({
downloadSpeed: networkStats.downloadSpeed, // İndirme hızı
latency: networkStats.latency, // Gecikme
packetLoss: networkStats.packetLoss, // Paket kaybı oranı
connectionType: networkStats.connectionType, // Bağlantı türü
});
Kalite Analizi
Kalite Metrikleri
// Kalite analizini başlat
player.startQualityAnalysis();
// Kalite olaylarını izle
player.on('qualitychange', (data) => {
console.log('Kalite değişikliği:', {
from: data.from,
to: data.to,
reason: data.reason,
timestamp: data.timestamp,
});
});
Hata İşleme
Gelişmiş Hata İşleme
Hata Sınıflandırması
// Hata türlerini sınıflandır
const errorTypes = {
NETWORK_ERROR: 'network',
DECODE_ERROR: 'decode',
MANIFEST_ERROR: 'manifest',
SEGMENT_ERROR: 'segment',
};
// Hata işleyicisini yapılandır
player.on('error', (error) => {
switch (error.type) {
case errorTypes.NETWORK_ERROR:
handleNetworkError(error);
break;
case errorTypes.DECODE_ERROR:
handleDecodeError(error);
break;
default:
handleGenericError(error);
}
});
Otomatik Kurtarma İşlevi
const recoveryConfig = {
autoRetry: true, // Otomatik yeniden deneme
maxRetries: 3, // Maksimum yeniden deneme sayısı
retryDelay: 2000, // Yeniden deneme gecikmesi
fallbackQuality: '480p', // Yedek kalite
emergencyMode: true, // Acil durum modu
};
Hata İzleme
Hata Günlüğü
// Hata günlüğü yapılandırması
const errorLogger = {
logLevel: 'error',
logToConsole: true,
logToServer: true,
logToLocalStorage: true,
};
// Hata istatistiklerini al
const errorStats = player.getErrorStats();
console.log({
totalErrors: errorStats.total,
errorRate: errorStats.rate,
lastError: errorStats.last,
errorHistory: errorStats.history,
});
Performans Optimizasyonu
Bellek Yönetimi
Bellek Kullanımı İzleme
// Bellek kullanımını izle
const memoryMonitor = {
enabled: true,
threshold: 100 * 1024 * 1024, // 100MB
cleanupInterval: 30000, // 30 saniye
maxMemoryUsage: 200 * 1024 * 1024, // 200MB
};
// Bellek temizliği
player.on('memorywarning', () => {
player.cleanupMemory();
console.log('Bellek temizliği yapıldı');
});
Kaynak Yönetimi
// Kaynak yönetimi yapılandırması
const resourceConfig = {
maxConcurrentRequests: 6, // Maksimum eşzamanlı istek sayısı
requestTimeout: 10000, // İstek zaman aşımı
cacheSize: 50 * 1024 * 1024, // Önbellek boyutu
cleanupOnPause: true, // Duraklatma sırasında temizlik
};
Buffer Optimizasyonu
Uyarlanabilir Buffer
const adaptiveBufferConfig = {
enabled: true,
minBuffer: 5, // Minimum buffer
maxBuffer: 30, // Maksimum buffer
targetBuffer: 10, // Hedef buffer
bufferAdjustment: 0.1, // Buffer ayarlama oranı
};
Özel Kullanıcı Arayüzü
UI Özelleştirme
Özel Kontroller
// Özel kontroller oluştur
const customControls = {
playButton: {
icon: 'custom-play-icon',
position: 'center',
size: 'large',
},
volumeSlider: {
orientation: 'vertical',
position: 'right',
width: 8,
},
progressBar: {
height: 6,
color: '#ff6b6b',
bufferColor: '#4ecdc4',
},
};
Tema Yapılandırması
const themeConfig = {
primaryColor: '#ff6b6b',
secondaryColor: '#4ecdc4',
backgroundColor: '#2c3e50',
textColor: '#ecf0f1',
borderRadius: 8,
fontSize: 14,
};
Duyarlı Tasarım
Kırılma Noktası Yapılandırması
const responsiveConfig = {
breakpoints: {
mobile: 768,
tablet: 1024,
desktop: 1200,
},
controls: {
mobile: ['play', 'volume', 'fullscreen'],
tablet: ['play', 'volume', 'progress', 'fullscreen'],
desktop: ['play', 'volume', 'progress', 'quality', 'fullscreen'],
},
};
Olay İzleme
Olay Sistemi
Özel Olaylar
// Özel olayları tanımla
const customEvents = {
qualitychange: 'Kalite değişikliği',
bufferwarning: 'Buffer uyarısı',
networkchange: 'Ağ değişikliği',
userinteraction: 'Kullanıcı etkileşimi',
};
// Olay dinleyicisini yapılandır
player.on('qualitychange', (data) => {
console.log('Kalite değiştirildi:', data);
});
player.on('bufferwarning', (data) => {
console.log('Buffer uyarısı:', data);
// Uyarı işleme
});
Olay İstatistikleri
// Olay istatistiklerini al
const eventStats = player.getEventStats();
console.log({
totalEvents: eventStats.total,
eventTypes: eventStats.types,
eventFrequency: eventStats.frequency,
lastEvent: eventStats.last,
});
Hata Ayıklama Araçları
Hata Ayıklama Modu
// Hata ayıklama modunu etkinleştir
const debugConfig = {
enabled: true,
logLevel: 'debug',
showStats: true,
showNetworkInfo: true,
showBufferInfo: true,
};
// Hata ayıklama bilgilerini göster
player.enableDebugMode(debugConfig);
Performans Profilleme
// Performans profilleme
const profiler = {
enabled: true,
sampleRate: 1000, // Örnekleme oranı (milisaniye)
metrics: ['cpu', 'memory', 'network'],
exportFormat: 'json',
};
// Profil sonuçlarını al
const profile = player.getProfile();
console.log('Performans profili:', profile);
Gelişmiş Entegrasyon
API Entegrasyonu
Harici API Entegrasyonu
// Harici API'lerle entegrasyon
const apiIntegration = {
analytics: {
enabled: true,
endpoint: '/api/analytics',
events: ['play', 'pause', 'seek', 'qualitychange'],
},
recommendations: {
enabled: true,
endpoint: '/api/recommendations',
triggerEvents: ['ended', 'error'],
},
};
Kimlik Doğrulama Sistemi
// Kimlik doğrulama sistemi entegrasyonu
const authConfig = {
enabled: true,
tokenEndpoint: '/api/auth/token',
refreshEndpoint: '/api/auth/refresh',
tokenExpiry: 3600000, // 1 saat
autoRefresh: true,
};
Eklenti Sistemi
Özel Eklenti
// Özel eklenti oluştur
class CustomPlugin {
constructor(player) {
this.player = player;
this.init();
}
init() {
this.player.on('ready', () => {
this.setupCustomFeatures();
});
}
setupCustomFeatures() {
// Özel özellikleri uygula
}
}
// Eklentiyi kaydet
player.registerPlugin('custom', CustomPlugin);
Bu gelişmiş özellikler, M3U8 Online Player'ın çeşitli kullanım durumları için özelleştirilmesini ve optimal bir akış deneyimi sağlamasını mümkün kılar.