Skip to content
ffmpeg-noise-reduction logo

FFmpeg Noise Reduction (2025)

ffmpeg-noise-reduction

Complete FFmpeg noise reduction and denoising for video and audio. PROACTIVELY activate for: (1) Video denoising (nlmeans, hqdn3d, vaguedenoiser), (2) Hardware-accelerated denoising (nlmeans_opencl, nlmeans_vulkan), (3) Audio noise reduction (afftdn, anlmdn), (4) Film grain removal, (5) Low-light...

SKILL.md

Full skill instructions

CRITICAL GUIDELINES

Windows File Path Requirements

MANDATORY: Always Use Backslashes on Windows for File Paths

When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).


Quick Reference

TaskFilterCommand Pattern
Video denoising (best)nlmeans-vf nlmeans=s=3:p=7:r=15
Video denoising (fast)hqdn3d-vf hqdn3d=4:3:6:4.5
GPU video denoisingnlmeans_vulkan-vf nlmeans_vulkan
Audio denoisingafftdn-af afftdn=nf=-25
Adaptive temporalatadenoise-vf atadenoise

When to Use This Skill

Use for noise reduction workflows:

  • Cleaning low-light or high-ISO footage
  • Removing film grain
  • Reducing compression artifacts
  • Cleaning audio recordings
  • Broadcast signal cleanup
  • Pre-processing before encoding

FFmpeg Noise Reduction (2025)

Comprehensive guide to video and audio denoising filters.

Video Denoising

nlmeans - Non-Local Means (Best Quality)

The highest quality software denoiser, using non-local means algorithm.

# Basic denoising
ffmpeg -i noisy.mp4 -vf "nlmeans" output.mp4

# Medium denoising (good default)
ffmpeg -i noisy.mp4 -vf "nlmeans=s=3.0:p=7:r=15" output.mp4

# Strong denoising (very noisy footage)
ffmpeg -i noisy.mp4 -vf "nlmeans=s=5.0:p=7:r=15" output.mp4

# Light denoising (preserve detail)
ffmpeg -i noisy.mp4 -vf "nlmeans=s=1.5:p=5:r=9" output.mp4

# Denoise only chroma (preserve luma detail)
ffmpeg -i noisy.mp4 -vf "nlmeans=s=3.0:sc=5.0:p=7:r=15" output.mp4

Parameters:

ParameterDescriptionDefaultRange
sDenoising strength (sigma)1.00-30
pPatch size71-99 (odd)
pcPatch size for chroma0 (same as p)1-99
rResearch window size151-99 (odd)
rcResearch window for chroma0 (same as r)1-99

Strength guidelines:

s valueUse case
1.0-2.0Light noise, preserve detail
2.0-4.0Moderate noise (typical)
4.0-6.0Heavy noise, low light
6.0+Extreme noise (quality loss)

nlmeans_opencl - GPU-Accelerated NLMeans

OpenCL accelerated version, much faster.

# OpenCL denoising
ffmpeg -i noisy.mp4 \
  -vf "hwupload,nlmeans_opencl=s=3:p=7:r=15,hwdownload,format=yuv420p" \
  output.mp4

# Strong denoising with OpenCL
ffmpeg -i noisy.mp4 \
  -vf "hwupload,nlmeans_opencl=s=5:p=7:r=21,hwdownload,format=yuv420p" \
  output.mp4

nlmeans_vulkan - Vulkan-Accelerated NLMeans (FFmpeg 8.0+)

Cross-platform GPU acceleration using Vulkan.

# Vulkan denoising
ffmpeg -init_hw_device vulkan \
  -i noisy.mp4 \
  -vf "hwupload,nlmeans_vulkan=s=3:p=7:r=15,hwdownload,format=yuv420p" \
  output.mp4

# Full Vulkan pipeline
ffmpeg -init_hw_device vulkan=vk \
  -filter_hw_device vk \
  -hwaccel vulkan -hwaccel_output_format vulkan \
  -i noisy.mp4 \
  -vf "nlmeans_vulkan=s=3" \
  -c:v h264_vulkan output.mp4

hqdn3d - High Quality 3D Denoiser (Fast)

Faster than nlmeans with good results for moderate noise.

# Default settings
ffmpeg -i noisy.mp4 -vf "hqdn3d" output.mp4

# Custom settings (luma_spatial:chroma_spatial:luma_tmp:chroma_tmp)
ffmpeg -i noisy.mp4 -vf "hqdn3d=4:3:6:4.5" output.mp4

# Strong spatial denoising
ffmpeg -i noisy.mp4 -vf "hqdn3d=8:6:6:4" output.mp4

# Strong temporal denoising (for static scenes)
ffmpeg -i noisy.mp4 -vf "hqdn3d=4:3:12:9" output.mp4

# Light denoising
ffmpeg -i noisy.mp4 -vf "hqdn3d=2:1.5:3:2" output.mp4

Parameters:

ParameterDescriptionDefaultRange
luma_spatialLuma spatial strength4.00-255
chroma_spatialChroma spatial strength3.00-255
luma_tmpLuma temporal strength6.00-255
chroma_tmpChroma temporal strength4.50-255

atadenoise - Adaptive Temporal Averaging

Temporal denoiser that preserves motion.

# Basic temporal denoising
ffmpeg -i noisy.mp4 -vf "atadenoise" output.mp4

# Stronger denoising
ffmpeg -i noisy.mp4 -vf "atadenoise=0a=0.1:0b=0.2:1a=0.1:1b=0.2:2a=0.1:2b=0.2" output.mp4

# Adjust threshold and planes
ffmpeg -i noisy.mp4 -vf "atadenoise=s=9:p=5" output.mp4

Parameters:

ParameterDescriptionDefault
0a, 1a, 2aThreshold A for planes 0,1,20.02
0b, 1b, 2bThreshold B for planes 0,1,20.04
sNumber of frames to average9
pPlanes to process7 (all)

vaguedenoiser - Wavelet Denoiser

Uses wavelet transform for denoising.

# Basic wavelet denoising
ffmpeg -i noisy.mp4 -vf "vaguedenoiser" output.mp4

# Adjust threshold
ffmpeg -i noisy.mp4 -vf "vaguedenoiser=threshold=3:method=soft" output.mp4

# Stronger denoising
ffmpeg -i noisy.mp4 -vf "vaguedenoiser=threshold=6:nsteps=6" output.mp4

Parameters:

ParameterDescriptionDefaultValues
thresholdDenoising threshold20-inf
methodThresholding methodhardhard, soft, garrote
nstepsDecomposition steps61-32
percentPercent of full denoising850-100

fftdnoiz - FFT-Based Denoising

Frequency domain denoising.

# Basic FFT denoising
ffmpeg -i noisy.mp4 -vf "fftdnoiz" output.mp4

# Adjust sigma
ffmpeg -i noisy.mp4 -vf "fftdnoiz=sigma=8" output.mp4

# Strong denoising
ffmpeg -i noisy.mp4 -vf "fftdnoiz=sigma=15:block=32:overlap=0.8" output.mp4

owdenoise - Overcomplete Wavelet Denoiser

Another wavelet-based option.

# Basic wavelet denoising
ffmpeg -i noisy.mp4 -vf "owdenoise" output.mp4

# Adjust depth and strength
ffmpeg -i noisy.mp4 -vf "owdenoise=depth=10:ls=3:cs=3" output.mp4

removegrain - RemoveGrain

Classic grain/​noise removal (from AviSynth).

# Mode 1 (basic)
ffmpeg -i noisy.mp4 -vf "removegrain=m0=1" output.mp4

# Different modes for different noise types
ffmpeg -i noisy.mp4 -vf "removegrain=m0=17:m1=17:m2=17" output.mp4

Audio Denoising

afftdn - FFT Denoiser (Recommended)

Powerful audio noise reduction using FFT.

# Basic audio denoising
ffmpeg -i noisy_audio.mp4 -af "afftdn" output.mp4

# Specify noise floor
ffmpeg -i noisy_audio.mp4 -af "afftdn=nf=-25" output.mp4

# Stronger noise reduction
ffmpeg -i noisy_audio.mp4 -af "afftdn=nf=-20:nt=w" output.mp4

# With noise profile (sample noise-only section first)
ffmpeg -i noisy_audio.mp4 -af "afftdn=nr=10:nf=-30:nt=w:om=o" output.mp4

# Adaptive noise floor
ffmpeg -i noisy_audio.mp4 -af "afftdn=nt=c:om=o:bn=9" output.mp4

Parameters:

ParameterDescriptionDefaultRange
nrNoise reduction (dB)120.01-97
nfNoise floor (dB)-50-80 to -20
ntNoise typeww=white, v=vinyl, s=shellac, c=custom
bnNumber of noise bands153-33
rfResidual floor (dB)-38-80 to -20
omOutput modeoi=input, o=output, n=noise

anlmdn - Non-Local Means Audio Denoiser

Audio equivalent of video nlmeans.

# Basic NLM audio denoising
ffmpeg -i noisy_audio.mp4 -af "anlmdn" output.mp4

# Adjust strength
ffmpeg -i noisy_audio.mp4 -af "anlmdn=s=0.0001" output.mp4

# Stronger denoising
ffmpeg -i noisy_audio.mp4 -af "anlmdn=s=0.001:p=0.01" output.mp4

Parameters:

ParameterDescriptionDefault
sDenoising strength0.00001
pPatch radius0.002
rResearch radius0.006
mOutput modeo (output)

adeclick - Remove Clicks/​Pops

Removes impulsive noise from audio.

# Remove clicks
ffmpeg -i clicked_audio.mp4 -af "adeclick" output.mp4

# Adjust parameters
ffmpeg -i clicked_audio.mp4 -af "adeclick=w=55:o=75" output.mp4

adeclip - Remove Clipping

Repairs clipped audio.

# Fix clipping
ffmpeg -i clipped_audio.mp4 -af "adeclip" output.mp4

Combined Workflows

Low-Light Video Enhancement

# Denoise + brighten + contrast
ffmpeg -i dark_noisy.mp4 \
  -vf "nlmeans=s=4:p=7:r=15,eq=brightness=0.1:contrast=1.2:saturation=1.1" \
  -c:v libx264 -crf 18 \
  enhanced.mp4

Interview Cleanup (Video + Audio)

# Clean both video and audio noise
ffmpeg -i interview.mp4 \
  -vf "hqdn3d=3:2:4:3" \
  -af "afftdn=nf=-30:nr=10,loudnorm" \
  -c:v libx264 -crf 20 \
  -c:a aac -b:a 192k \
  interview_clean.mp4

Film Grain Removal

# Strong nlmeans for film grain
ffmpeg -i grainy_film.mp4 \
  -vf "nlmeans=s=5:p=7:r=21" \
  -c:v libx264 -crf 18 -preset slow \
  degrained.mp4

# Preserve some grain (artistic choice)
ffmpeg -i grainy_film.mp4 \
  -vf "nlmeans=s=2.5:p=5:r=11" \
  -c:v libx264 -crf 18 \
  light_degrain.mp4

Compression Artifact Removal

# Remove blocking artifacts from highly compressed video
ffmpeg -i compressed.mp4 \
  -vf "hqdn3d=2:1.5:3:2,unsharp=5:5:0.3:5:5:0" \
  -c:v libx264 -crf 18 \
  cleaner.mp4

GPU-Accelerated Batch Processing

#!/​bin/​bash
# Process multiple noisy videos with GPU

for video in noisy_*.mp4; do
  output="clean_${video}"
  ffmpeg -init_hw_device vulkan \
    -i "$video" \
    -vf "hwupload,nlmeans_vulkan=s=3,hwdownload,format=yuv420p" \
    -c:v libx264 -crf 18 \
    "$output"
done

Filter Comparison

Video Denoising Speed vs Quality

FilterQualitySpeedGPU OptionBest For
nlmeansExcellentSlowYes (OpenCL/​Vulkan)Final output
hqdn3dGoodFastNoReal-time, previews
atadenoiseGoodMediumNoStatic scenes
vaguedenoiserGoodMediumNoMixed content
fftdnoizGoodMediumNoPeriodic noise

Audio Denoising Comparison

FilterQualitySpeedBest For
afftdnExcellentFastAll-purpose
anlmdnGoodMediumSpeech
adeclickSpecializedFastClicks/​pops

Parameter Tuning Tips

Video Denoising

  1. Start conservative - Begin with s=2-3, increase if needed
  2. Preserve edges - Lower patch size (p=5) preserves more detail
  3. Test on samples - Process 10-second clips first
  4. Consider GPU - nlmeans_opencl/​vulkan are 5-10x faster
  5. Match content - Static scenes tolerate stronger temporal denoising

Audio Denoising

  1. Find noise floor - Listen to quiet sections
  2. Use appropriate type - White noise vs vinyl vs custom
  3. Don't over-process - Artifacts can be worse than noise
  4. Check residual - Use om=n to hear what's being removed

Best Practices

  1. Denoise before encoding - Noise compresses poorly
  2. Preserve some texture - Over-denoising looks artificial
  3. Match source quality - Don't denoise clean footage
  4. Use GPU when available - Massive speed improvement
  5. Combine filters carefully - Multiple denoisers can cause artifacts
  6. Test different filters - Content-dependent results

This guide covers noise reduction for 2025. For video analysis and detection, see ffmpeg-video-analysis. For hardware acceleration, see ffmpeg-hardware-acceleration.

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View