TL;DR
FFmpeg meningkatkan resolusi video dengan -vf "scale=1920:1080:flags=lanczos" — Lanczos adalah algoritma penskalaan terbaik untuk upscaling. Untuk denoisifikasi, hqdn3d mengurangi grain sambil mempertahankan detail tepi. Untuk stabilisasi, vidstab menangani guncangan kamera melalui proses dua tahap. Gabungkan ketiganya dalam satu rantai filter untuk alur kerja peningkatan kualitas.
Pendahuluan
Peningkatan kualitas video dengan FFmpeg lebih dari sekadar mengubah resolusi. Peningkatan sejati menggabungkan upscaling resolusi dengan denoisifikasi cerdas dan stabilisasi opsional. Setiap langkah menargetkan masalah kualitas yang berbeda: rekaman yang buram atau berpiksel, frame yang berbintik atau berisik, dan gerakan kamera yang goyah.
Panduan ini mencakup setiap teknik secara independen dan menunjukkan cara menggabungkannya.
Algoritma penskalaan
Algoritma penskalaan menentukan bagaimana FFmpeg mengisi piksel baru saat upscaling. Pilihan ini memiliki efek yang terlihat pada kualitas output.
| Algoritma | Kecepatan | Kualitas | Terbaik untuk |
|---|---|---|---|
neighbor |
Tercepat | Terendah | Seni piksel |
bilinear |
Cepat | Rendah | Penting kecepatan |
bicubic |
Sedang | Baik | Downscaling umum |
lanczos |
Lebih lambat | Terbaik | Upscaling |
Upscale ke 1080p dengan Lanczos:
ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
Pertahankan rasio aspek:
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
-2 secara otomatis menghitung tinggi sambil mempertahankan rasio aspek dan memastikan hasilnya dapat dibagi 2.
Penskalaan ke 4K:
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
-preset slow memberi tahu x264 untuk menghabiskan lebih banyak waktu mengoptimalkan kompresi, yang lebih penting pada resolusi yang lebih tinggi.
Denoising dengan hqdn3d
Filter hqdn3d adalah denoisifikasi 3D berkualitas tinggi. Ini menghilangkan grain dan noise sambil mempertahankan detail tepi.
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Empat parameter: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
luma_spatial(0-16): Noise spasial pada saluran kecerahan. Default 4.chroma_spatial(0-16): Noise spasial pada saluran warna. Default 3.luma_temporal(0-16): Penghalusan temporal pada kecerahan. Default 6.chroma_temporal(0-16): Penghalusan temporal pada warna. Default 4.5.
Denoising yang lebih kuat:
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Nilai yang lebih tinggi menghilangkan lebih banyak noise tetapi dapat mengaburkan detail halus. Uji dengan pengaturan yang berbeda sebelum memproses video lengkap.
Denoising ringan (pertahankan detail):
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
Stabilisasi dengan vidstab
Filter vidstab memerlukan pendekatan dua tahap: pertama menganalisis gerakan, lalu menerapkan stabilisasi.
Instal: Dukungan vidstab tergantung pada build FFmpeg Anda. Periksa dengan ffmpeg -filters | grep vidstab. Di macOS: brew install ffmpeg menyertakannya.
Tahap 1: Analisis gerakan
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
shakiness=8 (1-10): Seberapa besar guncangan kamera yang diharapkan. accuracy=9 (1-15): Akurasi deteksi. -f null - membuang output; kita hanya membutuhkan file .trf.
Tahap 2: Terapkan stabilisasi
ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
zoom=1 menambahkan zoom 1% untuk mengkompensasi pemotongan tepi yang disebabkan oleh stabilisasi. Tingkatkan jika muncul batas hitam. smoothing=10 mengontrol seberapa halus jalur kamera (lebih tinggi = lebih halus).
Stabilisasi yang lebih agresif:
ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
optzoom=1 secara otomatis mengoptimalkan zoom untuk menghindari batas.
Alur kerja peningkatan kualitas gabungan
Jalankan ketiga operasi bersama-sama dalam satu rantai filter:
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
Terapkan urutan ini: denoise terlebih dahulu (menghilangkan artefak yang mungkin memengaruhi penskalaan), lalu skala, lalu stabilkan. Ini menghindari penskalaan noise ke resolusi yang lebih tinggi.
Catatan: Jalankan tahap vidstabdetect terlebih dahulu sebelum menggunakan alur kerja gabungan ini.
Filter penajaman
Jika rekaman terlihat buram daripada berisik, penajaman dapat membantu:
ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
Parameter: lx:ly:la:cx:cy:ca (ukuran dan jumlah luma/kroma)lx:ly — ukuran matriks luma (piksel)la — jumlah luma (positif = menajamkan, negatif = memburamkan)cx:cy:ca — ekuivalen kroma
Untuk penajaman ringan: unsharp=3:3:0.5:3:3:0.0
Untuk penajaman kuat: unsharp=5:5:2.5:5:5:0.0
Pertimbangan kinerja
Operasi peningkatan membutuhkan komputasi berat. Estimasi waktu pemrosesan untuk video 1080p berdurasi 10 menit:
- Hanya penskalaan sederhana: 2-5 menit
- Skala + hqdn3d: 5-10 menit
- Skala + hqdn3d + vidstab: 15-25 menit
Gunakan -preset untuk menyeimbangkan kecepatan encoding vs. ukuran file:
ultrafast— encoding tercepat, file lebih besarfast— kecepatan/ukuran sedangslow— paling lambat, file terkecil untuk CRF tertentuveryslow— biasanya tidak sepadan dengan waktu ekstra dibandingkanslow
Untuk pemrosesan batch, jalankan beberapa file secara bersamaan atau gunakan parallel:
ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
Menghubungkan ke API upscaling video AI
Untuk upscaling bertenaga AI (yang menghasilkan hasil lebih baik daripada filter FFmpeg untuk rekaman berkualitas rendah atau rusak), API khusus tersedia di samping alat FFmpeg.
WaveSpeedAI menawarkan model upscaling AI yang menggunakan neural upscaling daripada filter algoritmik:
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
}
Uji ini dengan Apidog sebelum diintegrasikan:
Tambahkan pernyataan (assertions):
Status code is 200
Response body has field id
Lakukan polling pada endpoint status untuk penyelesaian, lalu bandingkan output AI-upscaled dengan output Lanczos FFmpeg. Upscaling AI menangani tekstur dan detail halus lebih baik daripada metode algoritmik; FFmpeg lebih cepat dan gratis.
Gunakan FFmpeg untuk pekerjaan kualitas standar dan upscaling AI berbasis API untuk rekaman di mana kualitas paling penting.
FAQ
Apakah Lanczos lebih baik daripada bicubic untuk semua kasus?
Untuk upscaling, ya. Untuk downscaling, bicubic seringkali lebih cepat dengan kualitas yang sebanding. Lanczos secara komputasi lebih mahal.
Apakah vidstab berfungsi pada rekaman ponsel?
Ya. Rekaman ponsel seringkali paling diuntungkan dari stabilisasi. Parameter shakiness harus diatur tinggi (8-10) untuk video ponsel genggam.
Berapa banyak zoom yang diperlukan untuk menyembunyikan batas stabilisasi?
Biasanya 3-8% tergantung seberapa goyah sumbernya. Atur optzoom=1 agar FFmpeg menghitungnya secara otomatis.
Bisakah FFmpeg meningkatkan rekaman sejarah resolusi rendah?
Filter FFmpeg membantu tetapi memiliki batasan. Alat upscaling berbasis AI (seperti ESRGAN atau API peningkatan video khusus) menghasilkan hasil yang jauh lebih baik pada rekaman yang sangat terdegradasi.
Apakah denoising memperlambat pemutaran?
Tidak. Denoising adalah langkah pemrosesan selama konversi, bukan efek real-time. Video output diputar secara normal.
