Anime4K / FSRCNNX video upscaler GUI with optional RIFE 2x frame interpolation — by Daily Dana
A portable, single-file PowerShell/WPF app for Windows that permanently applies
mpv-style GLSL shader chains (Anime4K, FSRCNNX) to video files using FFmpeg's
libplacebo filter, with hardware encoding (Intel QSV / NVIDIA NVENC / AMD AMF) and
an optional RIFE AI frame-interpolation
stage that doubles the frame rate (24 → 48 fps).
- Batch queue — drag & drop files or folders; outputs are written next to the
source (
name_2x_upscale.mkv,name_2x_rife_upscale.mkv). Finished files show input → output size and the output as a percentage of the input. - Resume — the queue is saved as it changes. After closing (or a crash) Aniflow reopens with the same list, and Start skips finished files and continues with the rest. A file that was interrupted mid-encode is encoded again from the start (its partial output is deleted). Right-click → Queue again re-encodes a finished file.
- Presets — save the current settings (mode, resolution, filters, look and strength, encoder, quality, 10-bit, audio, extra parameters) under a name. Aniflow starts with the last saved or selected preset. The "When done" action is deliberately not part of a preset, so a shutdown is never restored by accident.
- 11 shader modes — Anime4K modes A/B/C, double modes (A+A, B+B, C+A), Adaptive Sharpen variants, FSRCNNX x2 16/8 + KrigBilateral. Below the mode list Aniflow shows Anime4K's own recommendation for the source resolution (A = 1080p, B = 720p, C = 480p).
- AI Upscale mode (Real-ESRGAN) - optional offline neural upscaling with
realesr-animevideov3(2x/3x/4x); frames are extracted, upscaled on any Vulkan GPU and re-encoded with audio/subtitles intact. Slower than shaders, far better on low-quality sources. The AI path works on 8-bit RGB frames, so its output is always 8-bit bt709 (4:2:0); HDR sources are not tone-mapped in this mode (use a shader mode for HDR material). - RIFE 2x frame interpolation (optional) — runs at source resolution via VapourSynth before the shader upscale; scene-change detection (built-in), audio/subtitles preserved.
- Output scaling — 2x/3x/4x multipliers or 1080p/1440p/2160p targets.
- Preview — process 10 seconds from the middle of the video and play it.
- Compare — classic Lanczos vs. shader chain, side by side in one video.
- Frame preview — 5 to 10 stills from across the video in a grid, each split
into original / result with one shared divider. Pick a look from the LUT list
(each entry has a thumbnail) and set its strength: every frame updates
instantly. The Shader mode tab runs any of the modes on the frames (with the
main window's resolution, deband and denoise); finished modes are cached, so
switching between them is instant. Hold Space for the original, click a frame to
enlarge it and Save image to export the comparison as PNG at full
resolution. Use these settings copies the look, its strength and the mode
to the main window.

- Encoders — x264/x265 (CPU), H.264/HEVC/AV1 QSV, NVENC, AMF.
- Settings window - language (English/Turkish), output folder/suffix/container (MKV/MP4), x264/x265 preset, AI model/tile size/GPU, custom temp folder for AI frames, RIFE model and GPU threads; saved to
%APPDATA%\Aniflow.settings.json. - Color looks (LUT) — 14 built-in looks (clean-pop, vivid, soft-pastel,
warm-evening, cool-night, teal-orange, faded-film, print-warm, bleach, retro-90s,
crisp, mono-neutral, mono-warm, anime-boost) applied in the same GPU pass as the shaders, so
there is no second encode (in AI mode via ffmpeg
lut3d). A strength slider (0–100%) blends the look with the original; below 100% a blended.cubeis written for the encode, so it still takes a single pass. The looks are original:tools/make-luts.pybuilds each one from a few documented grading parameters and re-creates the files bit for bit. Drop your own.cubefiles intoluts\custom\(the … button opens it) — they appear in the list without a restart.
- Advanced ffmpeg parameters box - pass any extra encoder options (e.g.
-preset veryslow). - Audio and subtitles are carried over; attachments (fonts) only in MKV. MP4
output drops attachments and bitmap subtitles (PGS/VobSub) and converts text
subtitles to
mov_text. Data streams such as the Dolby Vision RPU are not copied; for Dolby Vision profile 5 sources libplacebo applies the Dolby Vision metadata while rendering, so colours come out correct, but the output itself carries no Dolby Vision metadata. - Optional deband + denoise filters, audio copy or AAC/Opus re-encode, post-queue actions (sound / sleep / shutdown), sleep inhibited while encoding.
- Modern dark WPF interface (no install, runs on the PowerShell 5.1 built into
Windows): queue with per-file status and resolution/fps/duration, drag & drop
of files or folders, files can also be passed on the command line
(
Aniflow.ps1 a.mkv b.mkv), English/Turkish (switchable in Settings).
- Windows 10/11 with PowerShell 5.1 (built in)
- A GPU with Vulkan drivers (for libplacebo shaders; virtually anything post-2015)
- For RIFE: nothing extra —
setup.ps1installs a self-contained portable VapourSynth into the app folder (no system Python needed; an existing system-wide VapourSynth is used if found)
One-line install (no Git required) — paste into PowerShell:
irm https://raw.githubusercontent.com/DailyDana/Aniflow/main/install.ps1 | iexThis downloads the app to %LOCALAPPDATA%\Aniflow, fetches the dependencies and
puts an Aniflow shortcut on your desktop.
Manual install: click Code → Download ZIP on this page, extract it anywhere,
then right-click setup.ps1 → Run with PowerShell (or run
powershell -ExecutionPolicy Bypass -File .\setup.ps1). Launch with Aniflow.bat.
For developers (requires Git):
git clone https://github.com/DailyDana/Aniflow.git
cd Aniflow
.\setup.ps1 # downloads ffmpeg (BtbN), RIFE/VapourSynth and Real-ESRGANsetup.ps1 fetches what the repo does not ship:
bin\ffmpeg.exe+bin\ffprobe.exestraight from the official BtbN FFmpeg builds (nightly, verified against the SHA-256 digest published by the GitHub API when available);- the VapourSynth pieces (BestSource + RIFE ncnn Vulkan plugin + v4.6 model) from
this repo's
deps-v1release; - Real-ESRGAN ncnn-vulkan (exe + models only) from the official v0.2.5.0 release;
- a self-contained portable VapourSynth R79 (embedded Python 3.12 + the
VapourSynth wheel) in
vapoursynth\portable\— nothing is installed system-wide.
Every fixed download is pinned by SHA-256 and retried on failure. The script is
safe to re-run: it only repairs what is missing or broken (-Force re-downloads
everything). Exit code 0 = all good, 2 = ffmpeg OK but an optional part
(RIFE / AI) is missing, 1 = ffmpeg could not be installed.
- Hardware encoders depend on your GPU (QSV = Intel, NVENC = NVIDIA, AMF = AMD). If one fails, the log shows the ffmpeg error — fall back to x264.
- 10-bit checkbox: HEVC/AV1/x265 encode 10-bit (less banding, also from 8-bit sources); unchecked = 8-bit. It is greyed out for H.264, whose outputs are always 8-bit 4:2:0 for compatibility (10-bit H.264 does not play on most devices). Hardware H.264 encoders (QSV / NVENC / AMF) encode at most 4096 px wide — for larger targets use HEVC/AV1 QSV (or x264/x265 on the CPU).
- With RIFE enabled (including the RIFE preview), BestSource indexes the whole source file the first time it is opened. On a long episode or movie the progress bar can sit at 0% for a while (tens of seconds to minutes, depending on file size and disk speed) before frames start flowing — this is normal.
- The RIFE checkbox is disabled (with the reason in the log) when
vspipe, the RIFE plugin, orbestsource.dllis missing. - Quick health check:
powershell -ExecutionPolicy Bypass -File Aniflow.ps1 -SelfTest
MIT © 2026 Daily Dana — see LICENSE. Bundled/downloaded third-party components (Anime4K, FSRCNNX, KrigBilateral, adaptive-sharpen, FFmpeg, Real-ESRGAN, VapourSynth, Python, BestSource, RIFE) keep their own licenses — see THIRD-PARTY.md and the full texts in LICENSES/.
Anime4K / FSRCNNX shader zincirlerini videoya kalıcı uygulayan taşınabilir Windows aracı; isteğe bağlı RIFE 2x kare interpolasyonu ile. Yazar: Daily Dana.
- Kurulum (tek satır, Git gerekmez): PowerShell'e şunu yapıştırın:
irm https://raw.githubusercontent.com/DailyDana/Aniflow/main/install.ps1 | iex— uygulamayı indirir, bağımlılıkları kurar, masaüstüne kısayol koyar. Alternatif: Code → Download ZIP ile indiripsetup.ps1çalıştırın, ardındanAniflow.batile başlatın. - RIFE için: ek bir şey gerekmez —
setup.ps1uygulama klasörüne kendi kendine yeterli taşınabilir VapourSynth kurar (sistem Python'u gerekmez). Eksik parça varsa RIFE kutusu kapalı kalır, sebebi log penceresinde yazar. - Kullanım: dosyaları kuyruğa sürükleyin; shader modunu, kodlayıcıyı ve çözünürlüğü seçin; Önizleme videonun ortasından 10 sn işler, Karşılaştır klasik ölçekleme ile shader'ı yan yana gösterir. Çıktılar kaynak dosyanın yanına yazılır; biten dosyanın yanında giriş → çıkış boyutu ve çıktının girişin yüzde kaçı olduğu görünür. Mod listesinin altında kaynak çözünürlüğüne göre Anime4K önerisi çıkar (A = 1080p, B = 720p, C = 480p).
- Kaldığı yerden devam: kuyruk kaydedilir; uygulama kapanıp açılınca liste geri gelir, Başlat biten dosyaları atlar. Yarıda kalan dosya baştan kodlanır (yarım çıktı silinir). Biten dosyayı yeniden kodlamak için sağ tık → Tekrar sıraya al.
- Hazır ayarlar: mod, çözünürlük, filtreler, LUT ve yoğunluğu, kodlayıcı, kalite, ses ve ek parametreler adla kaydedilir; Aniflow son kaydedilen ya da seçilen hazır ayarla açılır. "Bitince" eylemi bilerek kaydedilmez.
- Donanım kodlayıcılar GPU'ya bağlıdır; hata verirse x264'e geçin. 10-bit kutusu HEVC/AV1/x265'te 10-bit kodlar (daha az bantlanma); H.264'te soluktur, H.264 çıktılar uyumluluk için hep 8-bit 4:2:0'dır. RIFE açıkken BestSource dosyayı ilk açışta baştan sona indeksler; uzun dosyalarda ilerleme çubuğu bir süre %0'da bekleyebilir, bu normaldir. AI modu çıktısı 8-bit bt709'dur, HDR ton eşlemesi yapmaz.
- Renk görünümleri (LUT): 14 hazır görünüm (anime-boost dahil) shader'larla aynı GPU geçişinde
uygulanır (ikinci kodlama yok); Yoğunluk kaydırıcısıyla %0-100 arası
karıştırılır. Görünümler özgündür,
tools/make-luts.pyher birini birkaç parametreden üretir. Kendi.cubedosyalarınızıluts\custom\klasörüne koyun (… düğmesi açar); yeniden başlatmadan listede görünür. - Kare önizleme: videonun farklı yerlerinden 5-10 kare yan yana; her karede solda orijinal, sağda sonuç. LUT listesinde gezindikçe ve yoğunluğu değiştirdikçe tüm kareler anında güncellenir. Shader modu sekmesi modları kareler üzerinde karşılaştırır (biten mod saklanır, geri dönmek anında olur). Boşluk = orijinal, kareye tıklama = büyük görünüm (Görseli kaydet ile PNG), Bu ayarları kullan seçimi ana pencereye aktarır.
- Ayrıntılı özellik listesi için yukarıdaki İngilizce bölüme, üçüncü taraf lisansları için THIRD-PARTY.md dosyasına bakın.
