Aniflow — Video Upscale AracıAniflow — Video Upscaler

mpv'de gerçek zamanlı çalışan Anime4K ve FSRCNNX shader zincirlerini videoya kalıcı olarak işleyen, tek dosyalık PowerShell/WinForms uygulaması; donanım kodlama, RIFE kare ara değerleme ve Real-ESRGAN seçenekleriyle.A single-file PowerShell/WinForms application that permanently bakes the Anime4K and FSRCNNX shader chains mpv runs in real time into video files, with hardware encoding, RIFE frame interpolation and Real-ESRGAN options.

PowerShell 5.1WinFormsffmpeg · libplaceboGLSLVapourSynth · RIFEReal-ESRGANMIT
SürümRelease
v1.4
YayınReleases
5
Shader ön ayarıShader presets
11
KodlayıcıEncoders
x264 · x265 · QSV · NVENC · AMF
Aniflow arayüzü: kuyruk, shader modu, kodlayıcı, çözünürlük seçenekleri
Ana pencere: sürükle-bırak kuyruk, shader modu, kodlayıcı, çıkış çözünürlüğü, RIFE seçeneği, önizleme ve karşılaştırma düğmeleri.Main window: drag-and-drop queue, shader mode, encoder, output resolution, RIFE option, preview and compare buttons.

ProblemProblem

mpv'nin GLSL shader'ları (Anime4K, FSRCNNX) yalnızca oynatma sırasında çalışır; paylaşılacak ya da başka bir cihazda izlenecek dosyaya işlenemez. ffmpeg'in libplacebo filtresi bunu yapabilir, ama komut satırı zinciri (shader yolu, Vulkan cihazı, kodlayıcı, ses/altyazı/ek akışları, 10-bit kaynaklar) her video için elle kurulmak zorundadır ve kolayca kırılır.

mpv's GLSL shaders (Anime4K, FSRCNNX) only run during playback; they cannot be baked into a file to share or watch elsewhere. ffmpeg's libplacebo filter can do it, but the command-line chain (shader path, Vulkan device, encoder, audio/subtitle/attachment streams, 10-bit sources) has to be assembled by hand for every video and breaks easily.

YaklaşımApproach

  • Kurulum yükü sıfır. PowerShell 5.1 + WinForms Windows'ta yerleşik; uygulama tek .ps1. setup.ps1 ffmpeg'i resmî BtbN yapısından, RIFE için taşınabilir VapourSynth'i (gömülü Python + eklenti + model) uygulama klasörüne indirir. Tek satır kurulum: irm … | iex.
  • Akış sadakati. Ses, altyazı, ek dosyalar ve Dolby Vision RPU veri akışları çıktıya taşınır; mp4 hedefinde uyumsuz akışlar otomatik dönüştürülür ya da atlanır.
  • Üç işleme yolu. Shader (libplacebo, tek geçiş) · RIFE 2x (VapourSynth → ffmpeg borusu, sahne değişimi duyarlı) · Real-ESRGAN (kare çıkar → GPU'da işle → yeniden kodla).
  • Çoklu GPU. Açılışta ffmpeg'in Vulkan cihaz listesi okunur, ayrık kart otomatik seçilir; dizüstünde iGPU'ya düşme sorunu ortadan kalkar.
  • Önizleme ve karşılaştırma. Videonun ortasından 10 sn işlenir; "Karşılaştır" klasik Lanczos ile shader zincirini tek videoda yan yana koyar.
  • Arayüz. EN/TR, ayarlar JSON'da, kuyruk sonu eylemleri (ses, uyku, kapatma), kodlama sırasında uyku engelleme, uygulama içi güncelleme kontrolü.
  • Zero install burden. PowerShell 5.1 + WinForms ship with Windows; the app is a single .ps1. setup.ps1 fetches ffmpeg from the official BtbN build and a portable VapourSynth (embedded Python + plugin + model) for RIFE. One-line install: irm … | iex.
  • Stream fidelity. Audio, subtitles, attachments and Dolby Vision RPU data streams are carried over; incompatible streams are converted or skipped for mp4 targets.
  • Three processing paths. Shader (libplacebo, single pass) · RIFE 2x (VapourSynth → ffmpeg pipe, scene-change aware) · Real-ESRGAN (extract frames → process on GPU → re-encode).
  • Multi-GPU. ffmpeg's Vulkan device list is read at startup and the discrete card is selected automatically; no more silently running on a laptop's iGPU.
  • Preview and compare. 10 seconds from the middle of the video are processed; "Compare" puts classic Lanczos and the shader chain side by side in one video.
  • UI. EN/TR, settings in JSON, post-queue actions (sound, sleep, shutdown), sleep inhibited while encoding, in-app update check.

Ölçülerek bulunan hatalarBugs found by measurement

v1.1'den v1.4'e kadar her sürüm bir saha raporu ya da denetim sonrası çıktı; düzeltmelerin her biri ölçülerek doğrulandı:

  • Ara format PNG olmalı, JPEG değil. AI yolunda JPEG'in bt601 varsayımı, bt709 kaynaklarda mor tonları kaydırıp karanlıkta blok artifact üretiyordu. Etiketsiz HD kaynaklarda renk matrisi artık çözünürlükten tahmin ediliyor (yeşil kanalda +14'lük sapma giderildi).
  • PowerShell'de konsol genişliği çıktıyı kırpıyor. 2>&1 | Out-String 119 sütunda satır kaydırınca uzun akış satırlarında çözünürlük 0×0 ve ses kodeği kaçıyordu; tüm ffmpeg ayrıştırmalarına -Width 4096.
  • Çok GPU'lu sistemde 10 kat yavaşlık. Shader, AI ve RIFE üçü de 0. cihaza (iGPU) düşüyordu; Vulkan cihaz algılama eklendi.
  • Köşeli parantezli dosya adları "bulunamadı". Test-Path joker açılımı yapıyordu; kullanıcı yollarına dokunan her çağrı -LiteralPath'e çevrildi.
  • Kabuk özel karakterleri. % & ^ ! içeren adlar RIFE komut satırını bozuyordu; yollar ortam değişkeniyle geçiriliyor. ncnn modeli ASCII dışı yoldan yüklenmediği için ("Masaüstü") 8.3 kısa yol kullanılıyor.

Every release from v1.1 to v1.4 followed a field report or an audit, and each fix was verified by measurement:

  • The intermediate format must be PNG, not JPEG. In the AI path, JPEG's bt601 assumption shifted purples on bt709 sources and produced blocky artefacts in dark scenes. For untagged HD sources the colour matrix is now inferred from resolution (a +14 green-channel offset eliminated).
  • Console width truncates PowerShell output. 2>&1 | Out-String wrapped at 119 columns, so long stream lines lost the resolution (0×0) and the audio codec; every ffmpeg parse now uses -Width 4096.
  • 10× slowdown on multi-GPU systems. Shader, AI and RIFE all fell to device 0 (the iGPU); Vulkan device detection was added.
  • Bracketed file names "not found". Test-Path expanded wildcards; every call touching user paths was switched to -LiteralPath.
  • Shell metacharacters. Names containing % & ^ ! broke the RIFE command line; paths are now passed through environment variables. The ncnn model refuses non-ASCII paths ("Masaüstü"), so the 8.3 short path is used.

ÖğrendiklerimWhat I learned

Kullanıcıya bir şey kurdurmamak, özellik listesindeki her maddeden daha çok kullanım getiriyor. Ve çıktı kalitesini belirleyen kararlar çoğunlukla görünmez olanlar: ara dosya formatı, renk etiketleri, hangi GPU'nun seçildiği. Bunların hiçbiri arayüzde değil; hepsi ölçülerek bulundu.

Not making the user install anything brings more usage than any item on the feature list. And the decisions that decide output quality are mostly the invisible ones: the intermediate file format, colour tags, which GPU gets picked. None of them is in the UI; all of them were found by measuring.