4.5 KiB
4.5 KiB
Video Player - Mevcut Ozellik Envanteri
Bu dosya, depoda yer alan kod, testler ve calistirilabilir komutlar incelenerek olusturuldu. Inceleme tarihi: 2026-02-12
1) Genel Mimari ve Paketleme
- React + TypeScript tabanli bir video oynatici kutuphanesi.
- Ana giris dosyasi:
src/index.ts - Ana bilesen:
src/components/VideoPlayer.tsx - Durum yonetimi:
src/contexts/PlayerContext.tsx - Vite ile hem demo app hem kutuphane derlemesi var:
- Uygulama derlemesi:
npm run build(vite.config.ts) - Kutuphane derlemesi:
npm run build:lib(vite.config.lib.ts)
- Uygulama derlemesi:
- Tip bildirimi uretiliyor (
vite-plugin-dts).
2) Desteklenen Medya Turleri ve Protokoller
Kaynak: src/utils/videoProtocol.ts, src/components/VideoElement.tsx
- Native HTML5 video (mp4/webm vb.): dogrudan
<video src=...> - HLS (
.m3u8)- Safari'de native oynatim denemesi
- Diger tarayicilarda
hls.jsile oynatim hls.jsnpm import + CDN fallback yapisi (src/utils/hlsLoader.ts)
- FLV / RTMP akislari:
flv.jsile kurulum (src/utils/rtmpSetup.ts)- npm import + CDN fallback (
src/utils/rtmpLoader.ts)
- MPEG-TS / IPTV (
.ts) akislari:mpegts.jsile kurulum (src/utils/mpegtsSetup.ts)
- DASH (
.mpd) algilamasi var, fakat oynatim su an desteklenmiyor (hata donduruluyor).
3) Oynatici Kontrolleri ve UI Ozellikleri
Kaynak: src/components/ControlsLayer.tsx, src/components/controls/*
- Play/Pause butonu
- Ortada buyuk play overlay butonu (duraklatilmis durumda)
- Ilerleme cubugu:
- Tiklayarak seek
- Surukleyerek seek
- Buffered gostergesi
- Hover zamani tooltip'i
- Ses kontrolu:
- Mute/unmute
- Slider ile ses seviyesi
- Zaman gostergesi (current/duration)
- Fullscreen butonu
- Picture-in-Picture butonu (tarayici destegine bagli)
- Ayarlar menusu:
- Hiz secimi (0.25x-2x)
- Altyazi secimi
- Ses izi secimi (HLS audio tracks varsa)
- Kalite secimi (HLS levels varsa)
- Yuklenme sirasinda spinner
- Canli yayin algilanirsa:
- Progress/time gizleniyor
- "LIVE" rozeti gosteriliyor
- Kontroller fullscreen + playing durumunda otomatik gizlenebiliyor.
4) Giris Yontemleri (Keyboard ve Touch)
Klavye kisayollari (src/hooks/useKeyboardShortcuts.ts)
Space/K: play-pauseArrowLeft/ArrowRight: -/+5sJ/L: -/+10sArrowUp/ArrowDown: ses artir/azaltM: muteF: fullscreenP: PIP0veyaHome: basa sarEnd: sona git1-9: yuzdeye git
Dokunmatik jestler (src/hooks/useTouchGestures.ts)
- Tek dokunus: play/pause
- Cift dokunus sol: -10s
- Cift dokunus sag: +10s
- Yatay kaydirma: seek
- Dikey kaydirma: ses seviyesi
5) Altyazi ve Icerik Isleme
Kaynak: src/utils/subtitles.ts, src/components/VideoElement.tsx
- WebVTT altyazi dosyalari direkt kullaniliyor.
- SRT dosyalari parse edilip VTT blob URL'e cevriliyor.
- Elle verilen altyazilar + HLS'den gelen altyazilar birlestiriliyor.
- Varsayilan (
default) altyazi secimi destekleniyor.
6) I18n ve Tema
Kaynak: src/i18n/index.ts, src/styles/variables.css, src/components/VideoPlayer.tsx
- Yerlesik diller: Ingilizce (
en) ve Turkce (tr) - Tarayici dilini algilama destegi
themeprop'u ile CSS variable override:primaryColoraccentColorbackgroundColortextColor
7) API ve Callback Yuzeyi
Kaynak: src/types/index.ts
- Temel props:
src,poster,autoplay,loop,muted,volume,playbackRate,currentTimecontrols,subtitles,theme,language,keyboardShortcuts,pictureInPictureclassName,style
- Olay callbackleri:
onPlay,onPause,onEndedonTimeUpdate,onVolumeChange,onProgressonLoadedMetadata,onDurationChange,onRateChangeonSeeking,onSeekedonFullscreenChange,onPictureInPictureChangeonWaiting,onCanPlay,onError
8) Hata Yonetimi ve Dayaniklilik
Kaynak: src/utils/corsHelper.ts, src/utils/hlsSetup.ts, src/utils/rtmpSetup.ts, src/utils/mpegtsSetup.ts
- URL dogrulama ve CORS kaynakli hata mesajlari
- HLS/FLV/MPEG-TS icin hata callbackleri
- HLS'de fatal hata toparlama denemeleri (
startLoad,recoverMediaError) - FLV/MPEG-TS tarafinda network/media hata recovery denemeleri
- Player instance temizligi icin cleanup akisi
9) Test, Lint ve Derleme Durumu
Bu inceleme sirasinda calistirilan komutlar:
npm run lint-> basarilinpm run test-> basarili- 3 test dosyasi, toplam 64 test geciyor
npm run build-> basarilinpm run build:lib-> basarili
Test dosyalari:
src/components/VideoPlayer.test.tsxsrc/utils/corsHelper.test.tssrc/utils/videoProtocol.test.ts