Özet (TL;DR)
FFmpeg, videoları -vf "scale=1920:1080:flags=lanczos" komutuyla büyütür — Lanczos, büyütme için en iyi ölçekleme algoritmasıdır. Gürültü giderme için, hqdn3d kenarları korurken greni azaltır. Stabilizasyon için, vidstab iki geçişli bir işlemle kamera sarsıntısını giderir. Kalite iyileştirme akışı için üçünü de tek bir filtre zincirinde birleştirin.
Giriş
FFmpeg ile video kalitesi iyileştirme, sadece çözünürlüğü değiştirmekten öteye gider. Gerçek iyileştirme, çözünürlük yükseltmeyi akıllı gürültü giderme ve isteğe bağlı stabilizasyon ile birleştirir. Her adım farklı bir kalite sorununu hedefler: bulanık veya pikselli görüntüler, grenli veya gürültülü kareler ve sarsıntılı kamera hareketi.
Bu kılavuz, her tekniği bağımsız olarak ele alır ve bunların nasıl birleştirileceğini gösterir.
Ölçekleme algoritmaları
Ölçekleme algoritması, FFmpeg'in büyütme yaparken yeni pikselleri nasıl dolduracağını belirler. Seçim, çıktı kalitesi üzerinde gözle görülür bir etkiye sahiptir.
| Algoritma | Hız | Kalite | En iyi olduğu durum |
|---|---|---|---|
neighbor |
En Hızlı | En Düşük | Piksel sanatı |
bilinear |
Hızlı | Düşük | Hız açısından kritik |
bicubic |
Orta | İyi | Genel küçültme |
lanczos |
Daha Yavaş | En İyi | Büyütme |
Lanczos ile 1080p'ye büyütme:
ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
En boy oranını koruma:
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
-2, en boy oranını korurken ve sonucun 2'ye bölünebilir olmasını sağlarken yüksekliği otomatik olarak hesaplar.
4K'ya ölçekleme:
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
-preset slow, x264'e sıkıştırmayı optimize etmek için daha fazla zaman harcamasını söyler, bu da daha yüksek çözünürlüklerde daha önemlidir.
hqdn3d ile gürültü giderme
hqdn3d filtresi, yüksek kaliteli 3D gürültü gidermedir. Kenar detayını korurken gren ve gürültüyü giderir.
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Dört parametre: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
luma_spatial(0-16): Parlaklık kanalındaki uzamsal gürültü. Varsayılan 4.chroma_spatial(0-16): Renk kanallarındaki uzamsal gürültü. Varsayılan 3.luma_temporal(0-16): Parlaklıkta zamansal yumuşatma. Varsayılan 6.chroma_temporal(0-16): Renkte zamansal yumuşatma. Varsayılan 4.5.
Daha güçlü gürültü giderme:
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Daha yüksek değerler daha fazla gürültüyü giderir ancak ince detayları bulanıklaştırabilir. Videonun tamamını işlemeden önce farklı ayarları test edin.
Hafif gürültü giderme (detayı koru):
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
vidstab ile stabilizasyon
vidstab filtresi iki geçişli bir yaklaşım gerektirir: önce hareketi analiz edin, sonra stabilizasyonu uygulayın.
Kurulum: vidstab desteği, FFmpeg yapınıza bağlıdır. ffmpeg -filters | grep vidstab ile kontrol edin. macOS'ta: brew install ffmpeg bunu içerir.
1. Geçiş: Hareketi analiz et
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
shakiness=8 (1-10): Ne kadar kamera sarsıntısı beklendiği. accuracy=9 (1-15): Algılama doğruluğu. -f null - çıktıyı atar; sadece .trf dosyasına ihtiyacımız var.
2. Geçiş: Stabilizasyonu uygula
ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
zoom=1, stabilizasyonun neden olduğu kenar kesmesini telafi etmek için %1 yakınlaştırma ekler. Siyah kenarlıklar görünürse artırın. smoothing=10, kamera yolunun ne kadar pürüzsüz olacağını kontrol eder (daha yüksek = daha pürüzsüz).
Daha agresif stabilizasyon:
ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
optzoom=1, kenarlıkları önlemek için yakınlaştırmayı otomatik olarak optimize eder.
Birleşik kalite iyileştirme akışı
Her üç işlemi de tek bir filtre zincirinde birlikte çalıştırın:
ffmpeg -i source.mp4 \
-vf "hqdn3d=4:3:6:4.5,scale=1920:-2:flags=lanczos,vidstabtransform=input=transform.trf:zoom=1:smoothing=10" \
-c:v libx264 -crf 18 -preset slow \
-c:a copy \
enhanced.mp4
Şu sırayı uygulayın: önce gürültü giderme (ölçeklemeyi etkileyebilecek bozuklukları giderir), ardından ölçekleme, sonra stabilizasyon. Bu, gürültüyü daha yüksek çözünürlüğe ölçeklemeyi önler.
Not: Bu birleşik akışı kullanmadan önce vidstabdetect geçişini çalıştırın.
Keskinleştirme filtresi
Görüntüler gürültülü olmaktan ziyade bulanık görünüyorsa, keskinleştirme yardımcı olabilir:
ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
Parametreler: lx:ly:la:cx:cy:ca (luma/kroma boyutları ve miktarları)lx:ly — luma matris boyutu (piksel)la — luma miktarı (pozitif = keskinleştir, negatif = bulanıklaştır)cx:cy:ca — kroma eşdeğerleri
Hafif keskinleştirme için: unsharp=3:3:0.5:3:3:0.0
Güçlü keskinleştirme için: unsharp=5:5:2.5:5:5:0.0
Performans değerlendirmeleri
İyileştirme işlemleri işlemci yoğunludur. 10 dakikalık 1080p video için işlem süresi tahminleri:
- Yalnızca basit ölçekleme: 2-5 dakika
- Ölçekleme + hqdn3d: 5-10 dakika
- Ölçekleme + hqdn3d + vidstab: 15-25 dakika
Kodlama hızı ile dosya boyutu arasındaki dengeyi sağlamak için -preset kullanın:
ultrafast— en hızlı kodlama, daha büyük dosyalarfast— orta hız/boyutslow— en yavaş, belirli CRF için en küçük dosyalarveryslow— genellikleslow'a göre ekstra zamana değmez
Toplu işleme için, birden fazla dosyayı eşzamanlı olarak çalıştırın veya parallel kullanın:
ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
Yapay Zeka video büyütme API'lerine bağlanma
Yapay zeka destekli büyütme (düşük kaliteli veya hasarlı görüntüler için FFmpeg'in filtrelerinden daha iyi sonuçlar üretir) için, FFmpeg araçlarının yanı sıra özel API'ler de mevcuttur.
WaveSpeedAI, algoritmik filtreler yerine nöral büyütme kullanan yapay zeka büyütme modelleri sunar:
POST https://api.wavespeed.ai/api/v2/wavespeed-ai/video-enhance
Authorization: Bearer {{WAVESPEED_API_KEY}}
Content-Type: application/json
{
"video_url": "https://storage.example.com/source-video.mp4",
"scale": 2,
"enhance": true
}
Entegre etmeden önce Apidog ile test edin:
Onaylamalar ekleyin:
Status code is 200
Response body has field id
Tamamlanması için durum uç noktasını yoklayın, ardından yapay zeka ile büyütülmüş çıktıyı FFmpeg'in Lanczos çıktısı ile karşılaştırın. Yapay zeka büyütme, dokuları ve ince detayları algoritmik yöntemlerden daha iyi işler; FFmpeg daha hızlı ve ücretsizdir.
Standart kalite işleri için FFmpeg'i, kalitenin en önemli olduğu görüntüler için ise API tabanlı yapay zeka büyütmeyi kullanın.
Sıkça Sorulan Sorular
Lanczos, tüm durumlarda bicubic'ten daha mı iyidir?
Büyütme için, evet. Küçültme için, bicubic genellikle karşılaştırılabilir kalitede daha hızlıdır. Lanczos, işlem gücü açısından daha pahalıdır.
vidstab telefon görüntüleri üzerinde çalışır mı?
Evet. Telefon görüntüleri genellikle stabilizasyondan en çok fayda sağlar. Elde çekilen telefon videoları için sarsıntı parametresi yüksek ayarlanmalıdır (8-10).
Stabilizasyon kenarlıklarını gizlemek için ne kadar yakınlaştırma gerekir?
Genellikle kaynağın ne kadar sarsıntılı olduğuna bağlı olarak %3-8. FFmpeg'in otomatik olarak hesaplaması için optzoom=1 ayarlayın.
FFmpeg düşük çözünürlüklü tarihi görüntüleri iyileştirebilir mi?
FFmpeg'in filtreleri yardımcı olur ancak sınırları vardır. Yapay zeka tabanlı büyütme araçları (ESRGAN veya özel video iyileştirme API'leri gibi) ciddi şekilde bozulmuş görüntülerde önemli ölçüde daha iyi sonuçlar üretir.
Gürültü giderme oynatmayı yavaşlatır mı?
Hayır. Gürültü giderme, dönüştürme sırasında bir işlem adımıdır, gerçek zamanlı bir efekt değildir. Çıktı video normal şekilde oynatılır.
