/// Uygulama geneli sabitler. class Sabitler { static const String uygulamaIsmi = 'FikoYT Video Stüdyo'; static const String surum = '0.1.0'; /// LTX Desktop'un çözünürlüğe göre desteklediği maksimum segment süresi (saniye). static const Map cozunurlukMaxSure = { '512p': 20, '540p': 20, '720p': 10, '1080p': 5, }; /// LTX API'nin kabul ettiği süre değerleri (saniye). static const List izinliSureler = [5, 6, 8, 10, 20]; static const List modeller = ['fast', 'pro']; static const List oranlar = ['16:9', '9:16']; static const List cozunurlukler = ['512p', '540p', '720p', '1080p']; static const List kameraHareketleri = [ 'none', 'dolly_in', 'dolly_out', 'dolly_left', 'dolly_right', 'jib_up', 'jib_down', 'static', 'focus_shift', ]; /// Video için varsayılan FPS. static const String varsayilanFps = '24'; /// Varsayılan negatif prompt (mevcut Python pipeline ile aynı). static const String varsayilanNegatifPrompt = 'blurry, low quality, distorted face, extra fingers, multiple people, bright daylight, cartoon, animated'; static const String varsayilanPrompt = 'cinematic slow motion, beautiful scenery, atmospheric lighting, high quality 4k'; /// LTX Desktop'un denenecek bilinen portları (otomatik keşif fallback). static const List bilinenLtxPortlari = [57835, 62106, 62725, 8000, 8080]; /// İstenen süreyi LTX'in kabul ettiği en yakın süreye yuvarlar. /// NOT: Çözünürlük kısıtlaması artık uygulanmaz — kullanıcı hangi süreyi /// seçtiyse, sadece izinliSureler listesindeki en yakına yuvarlanır. /// LTX Desktop kabul etmezse hata mesajı UI'da görünür. static int izinliSureyeYuvarla(int istenen, String cozunurluk) { if (izinliSureler.contains(istenen)) return istenen; if (izinliSureler.isEmpty) return 5; return izinliSureler.reduce((a, b) => (istenen - a).abs() <= (istenen - b).abs() ? a : b); } /// Mevcut video-uretim klasörünün yolu (bat ve python dosyalarının olduğu). static const String videoUretimKok = r'D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim'; static const String aceStepBatYolu = r'$videoUretimKok\ACE-Step-Baslat.bat'; static const String aceStepUrl = 'http://127.0.0.1:7860'; static const String wangpKokYolu = r'$videoUretimKok\LTX-Desktop-WanGP\LTX-Desktop-WanGP\Wan2GP'; static const String wangpPythonYolu = r'$videoUretimKok\LTX-Desktop-WanGP\LTX-Desktop-WanGP\Wan2GP\env_venv\Scripts\python.exe'; static const String faceFusionDir = r'$videoUretimKok\FaceFusion'; static const String faceFusionVenvPython = r'$videoUretimKok\FaceFusion\venv\Scripts\python.exe'; }