Backend Geliştirme
Açık Kaynak

Smart TV Yerel Medya Sunucusu: Rust & Axum Backend

RustAxumTokioTowerFFmpegTracingSerde

Rust ile geliştirilmiş, yüksek performanslı ve asenkron bir medya akış (streaming) ve indeksleme sunucusu. Ham medya dosyalarını HTTP üzerinden sunarken, FFmpeg alt süreçleri (subprocess) aracılığıyla dinamik olarak video küçük resimleri (thumbnail) ve ileri/geri sarma (scrubbing) önizlemeleri üretir.

Teknoloji Yığını

RustAxumTokioTowerFFmpegTracingSerde

Sistem Metrikleri

Sıfır ek yüklü (zero-overhead) asenkron I/O, eşzamanlı medya akışı ve FFmpeg yürütmesi sırasında thread açlığını (starvation) önler
JVM veya Node.js tabanlı medya sunucularına kıyasla headless ve minimum kaynak tüketen bellek ayak izi
Verimli lokalize kare çıkarımı, video sarması sırasında yalnızca çevreleyen kareleri üreterek CPU darboğazını (thrashing) en aza indirir

Bunu Neden İnşa Ettim?

"Devasa yerel medya dosyalarını bir Smart TV'ye aktarmak, düşük gecikmeli ve sıfır ek yüke sahip bir arka uç (backend) gerektirir. Plex veya Jellyfin gibi hazır medya sunucuları mimari olarak şişkin (bloated) ve kaynak tüketicidir. Özel bir Flutter Smart TV istemcisiyle doğrudan iletişim kurmak için bu hafif Rust arka ucunu geliştirdim. Geleneksel medya sunucularının devasa CPU/RAM ayak izi olmadan, ileri/geri sarma çubuğu (seek-bar scrubbing) için anında `ffmpeg` kare çıkarımı (frame extraction) yapar ve statik dosya sunumu sağlar."

Mimari & Kararlar

Mimari, Tokio asenkron çalışma zamanı (runtime) ve Axum web framework'ü üzerine inşa edilmiştir. Yüksek düzeyde optimize edilmiş sıfır kopya (zero-copy) statik dosya sunumu için `tower-http` kullanır. Medya dizini taraması ve FFmpeg kare çıkarma (`tokio::process::Command`) işlemleri asenkron olarak yürütülür ve ağır yükler altında I/O iş parçacıklarının (threads) kilitlenmesini engeller. Sunucu, açılışta (boot) standart küçük resimleri önbelleğe almak için özyineli (recursive) bir preloader'a ve zamansal sarma (scrubbing) için (önizleme amacıyla lokalize edilmiş kare dizileri çıkararak) isteğe bağlı (on-demand) bir jeneratöre sahiptir. Mutlak I/O performansı sağlamak için loglama işlemleri tamamen bloklamayan (non-blocking) `tracing_appender` ile yönetilir.

Temel Özellikler

  • 01.Asenkron medya indeksleme ve özyineli (recursive) dizin taraması
  • 02.Zamansal sarma (scrubbing) önizlemeleri için anında (on-the-fly) FFmpeg alt süreç orkestrasyonu
  • 03.`tower-http` katmanı üzerinden sıfır kopya (zero-copy) statik medya sunumu
  • 04.Önbelleğin anında hazır olmasını sağlayan açılış zamanı (boot-time) küçük resim yükleyicisi
  • 05.`tracing` ekosistemi üzerinden bloklamayan, günlük dönen (rolling) loglama mimarisi
Bu arka uç, yerel medya sunumunda agresif bir optimizasyon sergilemektedir. Statik dosya teslimatını son derece optimize edilmiş `tower-http` katmanına devrederek ve maliyetli `ffmpeg` çıkarma işlemlerini kesinlikle bloklamayan Tokio görevleri üzerinden yürüterek; sunucu mutlak bellek güvenliğini korur ve Flutter arayüzünü doğrudan beslerken düşük güçlü NAS donanımlarında veya tek kartlı bilgisayarlarda kusursuz bir şekilde çalışır.