Sharpen video with unsharp
If a video looks soft after encoding, scaling, or denoising, a one-pass unsharp sharpen restores perceived detail. The filter builds a blurred copy of the frame and subtracts it, leaving the high-frequency edges that read as 'sharp' to the eye.
The command
ffmpeg -i in.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" -c:v libx264 -crf 20 out.mp4What it does
The two triplets are: luma matrix size, luma amount, luma sigma, chroma matrix size, chroma amount, chroma sigma. The first triplet sharpens the brightness channel; the second sharpens color. A common luma-only setup is `unsharp=5:5:1.0`; the chroma values are set to 0 to avoid amplifying color noise. The amount is in arbitrary units — start at 1.0 and adjust by taste.
Requirements
Any video input. The filter is part of the standard libavfilter set. No special build flags, no GPU. Runs on the CPU, so the encode is single-threaded per frame; budget for the cost.
Things to avoid
- Sharpening already-sharp footage. It does not add detail that was not there, it amplifies edges, and over-sharpened content looks like a 'halo' around every contrast boundary.
- Setting the matrix size too small. A 3x3 matrix only sharpens very local edges; 5x5 or 7x7 gives a more natural result.
- Sharpening the chroma (color) channel. Color noise is far more visible than luma noise; keep chroma amount at 0 unless you have a specific reason.
- Combining unsharp with a heavy denoise and expecting both to apply. The filter chain runs in order; if you denoise then sharpen, the sharpening amplifies the surviving detail, which is what you want.