Files

3.3 KiB
Raw Permalink Blame History

🚀 FastWatcher

FastWatcher, mobil cihazlardaki video içeriklerini akıllı televizyonlara (Android TV vb.) en hızlı ve stabil şekilde aktarmak için tasarlanmış, modern ve SOLID prensiplerine dayalı bir Flutter uygulamasıdır.

🧠 Çalışma Mantığı ve Mimari

Uygulamanın kalbinde, mobil cihazın bir "Kumanda/Gönderici" (Sender) ve televizyonun bir "Alıcı" (Receiver) olarak çalıştığı bir ekosistem yatar.

1. Cihaz Keşfi (mDNS / Zero-config)

FastWatcher, cihazların birbirini bulması için karmaşık IP girişleri gerektirmez. mDNS (Multicast DNS) protokolünü kullanır:

  • TV (Receiver): Uygulama açıldığında arka planda _http._tcp tipinde bir servis yayınlamaya başlar.
  • Mobil (Sender): "Eşleş" butonuna basıldığında ağı tarar ve FastWatcher servisi yayınlayan TV'leri anında listeler.

2. İletişim Protokolü (Local HTTP Server)

Cihazlar arası veri aktarımı raw socket yerine daha güvenli ve yönetilebilir olan HTTP üzerinden gerçekleşir:

  • TV tarafında küçük bir Shelf HTTP Server çalışır.
  • Mobil cihaz, TV'ye bir POST /play isteği gönderir.
  • Payload Yapısı:
    {
      "url": "https://video-kaynagi.com/stream.m3u8",
      "title": "Video Başlığı",
      "timestamp": 1714415045
    }
    

3. Video Linki Ayrıştırma (Headless Extraction)

Modern web siteleri video linklerini doğrudan paylaşmaz. FastWatcher bu sorunu Headless WebView ile çözer:

  • Kullanıcı bir web sayfasını paylaştığında, uygulama arka planda gizli bir tarayıcı açar.
  • Sayfa yüklenirken ağ trafiği dinlenir (onLoadResource).
  • .m3u8, .mp4 veya .mkv gibi video stream linkleri yakalandığı an sayfa kapatılır ve link TV'ye fırlatılır.

4. Video Oynatma (MediaKit Engine)

TV tarafında en geniş codec desteği için standart oynatıcılar yerine MediaKit (libmpv tabanlı) kullanılır:

  • Yüksek Performans: 4K videolar ve HLS streamleri donmadan oynatılır.
  • Esneklik: MKV, MP4, TS ve özel şifreli stream formatlarını destekler.

🏗 Mimari Yapı (Clean Architecture)

Proje, Feature-First Clean Architecture yapısını takip eder:

graph TD
    UI[Presentation / UI] --> Riverpod[State Management / Riverpod]
    Riverpod --> Repo[Data / Repository]
    Repo --> Service[External Services / nsd, shelf, media_kit]
  • lib/core: Tema, sabitler ve ortak kullanılan yardımcı sınıflar.
  • lib/features/setup: Cihaz rolü (TV/Telefon) seçimi ve ayarların kalıcılığı.
  • lib/features/discovery: mDNS ağ tarama ve servis kayıt işlemleri.
  • lib/features/sender: Link yakalama, headless parsing ve HTTP POST gönderim mantığı.
  • lib/features/receiver: HTTP Server yönetimi ve video oynatıcı entegrasyonu.

🛠 Kullanılan Teknolojiler

Teknoloji Amaç
Flutter Riverpod Reactive State Management ve Dependency Injection.
NSD Ağ üzerindeki cihazları otomatik keşfetme (mDNS).
Shelf TV tarafında REST API sunucusu kurma.
MediaKit Profesyonel seviyede video oynatma motoru.
InAppWebView Sayfa içindeki gizli video linklerini yakalama.

Important

Bu uygulama, televizyon ve mobil cihazın aynı Wi-Fi ağında olmasını gerektirir.