Video Sıkıştırma Analizi
Videonu hiçbir yere yüklemeden tarayıcıda inceleyip uygun sıkıştırma ayarlarını öneren bir araç.
Video dosyalarını inceleyip H.264, H.265, VP9 ve AV1 için uygun sıkıştırma ayarlarını öneren bir web uygulaması. Tamamen istemci tarafında çalışıyor: bütün işi ffmpeg.wasm tarayıcının içinde yapıyor.

- Durum
- Yayında
- Kategori
- Araç
- Güncelleme
- 27 Ağustos 2026
- Yığın
- Next.jsTypeScriptffmpeg.wasmZustand
- Bağlantılar
- Canlı site Kaynak kod
Video Compression Analyzer, video dosyalarını inceleyip H.264, H.265, VP9 ve AV1 için codec, bitrate, CRF ve preset önerileri çıkaran bir web uygulaması. Bütün iş tarayıcında dönüyor: videoların hiçbir sunucuya yüklenmiyor, analiz ve dönüştürme WebCodecs ve FFmpeg.wasm ile yapılıyor. Dosyaları sürükleyip bırakman ya da bir klasör seçmen yeterli. Her video kendiliğinden analiz ediliyor; gerçek codec'i, kare hızı (değişken kare hızı tespiti dahil), akış bazında bitrate'i, HDR, döndürme ve ses bilgisi çıkarılıyor.
Film, anime, eğitim ve oyun gibi içerik türleri için hazır preset'ler var. Parametre analizi de bir ayarın dosya boyutunu, kaliteyi ve kodlama süresini nasıl etkilediğini gösteriyor. Öneriler doğrudan kopyalayabileceğin FFmpeg komutları olarak geliyor; birden fazla video için Windows .bat ya da Linux / macOS .sh toplu script'i de üretebilirsin.
Dönüştürmeyi de uygulamanın kendisi yapıyor. Bir videoyu belirli bir boyuta sığdırabilirsin: Discord için 10 MB, WhatsApp için 16 MB, e-posta için 25 MB gibi. Kırpabilir, döndürebilir, sesi M4A, Opus, MP3 ya da WAV olarak ayırabilir, metadata'yı temizleyebilirsin. Çıktı, orijinaline göre PSNR / SSIM ile puanlanıyor; iki videoyu senkron oynatıp yan yana da karşılaştırabiliyorsun. Arayüzü Türkçe ve İngilizce olarak Next.js 16, React 19, TypeScript, Tailwind CSS 4, shadcn/ui ve Zustand ile yazdım. Çıktı statik olduğu için herhangi bir statik barındırma servisine konabiliyor.
Bir cephe, üç motor
Arayüz, dönüştürme motorunu doğrudan tanımıyor. Yalnızca src/lib/engine/index.ts'teki tek bir cepheye probe, encode ve measure çağrıları yapıyor; cephenin arkasında da ortama göre seçilen üç motor var. Tarayıcıda varsayılan yol Mediabunny. WebCodecs (GPU) üzerinden demux, transcode ve mux yapıp sesli MP4, WebM, MKV ya da MOV üretiyor. AVI, FLV ve WMV gibi formatlarda FFmpeg.wasm devreye giriyor. Metadata çıkarırken FFmpeg.wasm kullanılamıyorsa HTML5 Video API'ye düşülüyor. Dosyaları parça parça okuduğum için eski 50 MB sınırını da kaldırabildim.
Aynı Next.js arayüzü, bir Electron kabuğu içinde masaüstü uygulaması olarak da çalışıyor. Orada değişen tek şey motor: üçüncü motor, window.vcaDesktop köprüsü üzerinden ana süreçteki yerel FFmpeg'e gidiyor. EncodeOptions nesnesini FFmpeg argümanlarına ffmpeg-args.ts çeviriyor; aynı kod hem FFmpeg.wasm hem yerel FFmpeg için kullanılıyor. useDesktop() hook'u köprüyü fark edince çıktı klasörü, "Klasörde göster" ve GPU bilgisi gibi masaüstüne özgü özellikleri açıyor. Sürükleyip bıraktığın dosyanın disk yolunu webUtils.getPathForFile() ile aldığım için dosya belleğe kopyalanmıyor.
| Tarayıcı | Masaüstü | |
|---|---|---|
| Motor | WebCodecs (Mediabunny), FFmpeg.wasm | Sistemdeki ya da paketli FFmpeg |
| Dosya boyutu | WebCodecs ile sınırsız, FFmpeg.wasm ile ~2 GB | Sınırsız |
| GPU kodlayıcı | Tarayıcının seçtiği | NVENC, QSV, AMF, VideoToolbox |
| İki geçişli kodlama | Yok | Var |
| Kalite ölçümü | Örneklenmiş kareler | Tüm video |
Masaüstünde hangi FFmpeg'in kullanılacağına electron/ffmpeg-tools.cjs karar veriyor ve şu sırayla bakıyor: önce ortam değişkeniyle verilmiş bir yol; sonra, paketli FFmpeg'de bulunmayan ve çalışan bir GPU kodlayıcısı içeriyorsa sistemdeki ffmpeg; ardından uygulamayla gelen ffmpeg-static; en son da yine sistemdeki ffmpeg. Bir GPU kodlayıcısının listede görünmesi bana yetmiyor, her birini 3 karelik bir deneme kodlamasıyla doğruluyorum.
Renderer'a verilen yetki
Electron penceresi contextIsolation ve sandbox açık, nodeIntegration kapalı çalışıyor. Renderer yalnızca window.vcaDesktop üzerindeki sınırlı fonksiyonlara erişebiliyor; bu fonksiyonlar da vca:probe, vca:encode, vca:cancel, vca:thumbnail ve vca:measure-quality IPC kanallarına gidiyor. FFmpeg argümanları renderer'da üretiliyor ama ana süreçte doğrulanıyor: son geçişin çıktısı, ana sürecin hazırladığı yoldan başka bir yer olamıyor. "Aç", "Klasörde göster" ve "Kalite ölç" yalnızca o oturumda üretilen çıktı dosyalarında çalışıyor. Uygulamayı sunan app:// protokolü out/ klasörünün dışına çıkan yolları reddediyor; uygulama dışındaki adresler de pencerede değil, sistem tarayıcısında açılıyor.
Hâlâ eksik olanlar
Tarayıcıda FFmpeg.wasm tek iş parçacığında çalışıyor ve yavaş; VP9 ve AV1 kodlaması da yalnızca WebCodecs ile yapılabiliyor. Masaüstünde çıktı önizlemesi ve orijinalle karşılaştırma henüz yok, otomatik güncellemeyi de daha yapılandırmadım. Linux'taki ffmpeg-static derlemesinde GPU kodlayıcı olmadığı için NVENC ya da QSV kullanmak istersen sisteme FFmpeg kurman gerekiyor; VAAPI desteği ise yok. Paketler imzasız olduğundan macOS'ta Gatekeeper, Windows'ta da SmartScreen uyarı veriyor.