How to blur part of a video or black it out
Blur part of a video by cropping the area, blurring it, and overlaying it back in one FFmpeg filtergraph on Sume, or cover it with a solid drawbox.

To blur part of a video, copy the frame, crop the area you want to hide from the copy, blur it, and overlay it back at the same position; to hide the area completely, draw a solid box over it instead. In FFmpeg either one is a single filtergraph (split, crop, gblur, and overlay, or drawbox), and Sume's POST /v1/video-filter runs it on a clip already hosted on media.sume.com and returns a new MP4. With fixed numbers the area stays in the same place for the whole clip, so it won't follow a face or a plate that moves.
The filter syntax comes from the FFmpeg filters documentation and the Sume facts from the Video filter and Video frames docs and the Sume API reference, all read on 2026-09-27. Behavior read from Sume's filter compiler is described as it works today.
How do I blur a fixed area of a video?
Measure the area in pixels from the frame's top-left corner, then fill in this graph: split[main][copy];[copy]crop=400:120:760:900,gblur=sigma=20[blurred];[main][blurred]overlay=760:900. It's the pattern FFmpeg's own docs use to process part of a picture and lay it back on top:
splitmakes two copies of the frame, labeled[main]and[copy].crop=400:120:760:900keeps a 400×120 area of the copy whose top-left corner is at x 760, y 900.gblur=sigma=20blurs it.sigmais the Gaussian blur's standard deviation, default 0.5, and applies vertically too unless you setsigmaV; a larger value blurs more.overlay=760:900lays the blurred area back on[main]at the same x and y.- Sume accepts internal labels such as
[main]but refuses stream specifiers such as[0:v], because the server supplies the input and output. Today the graph must also start and end with a filter, not a label.
curl -X POST https://api.sume.com/v1/video-filter \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: blur-area-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/screen-recording.mp4",
"filtergraph": "split[main][copy];[copy]crop=400:120:760:900,gblur=sigma=20[blurred];[main][blurred]overlay=760:900"
}'How do I black out part of a video instead?
Draw a filled box: drawbox=x=760:y=900:w=400:h=120:color=black:t=fill. x and y are the box's top-left corner, t=fill fills the box instead of drawing a 3-pixel edge, and color takes a name or a hex value in FFmpeg's color syntax. If a blur still leaves text readable, raise sigma or use the box. Two boxes are two drawbox filters joined by a comma.
How do I find the area's position and size?
Take full-size stills with POST /v1/video-frames: it's unbilled, keeps the source frame size when you leave out max_edge, and takes up to 24 times per call in at[]. Read the area's top-left corner and size in any image editor. If the thing you're hiding moves a little, size the box to cover every position you see across the stills.
The clip must already be your workspace's media.sume.com artifact or asset, such as an earlier Sume job's output; which URLs each endpoint accepts explains the rule.
Can I blur only a few seconds of the video?
Yes, in a few steps. The graph above blurs every frame of the clip, so cut the clip into parts with video trim, filter the part that needs it, and join the parts in a Timeline 1.0 render. Today a render's sound comes from its audio spine, not from the clips, so pass the clip's track from audio detach as audio.url.
What are the limits?
The result is a new MP4 with the source's size, frame rate, and audio; the source stays untouched.
| Limit | Value |
|---|---|
| Source | One Sume-hosted clip of up to 300 s; a longer one fails with output_duration_exceeded |
| Graph size | At most 2,048 characters and 32 named filters; the blur graph above names four |
| Labels | Internal labels only; a stream specifier fails with invalid_filtergraph |
| HDR sources | PQ and HLG are refused with hdr_source_unsupported |
| Billing | POST /v1/video-filter/check is free; each encode is billed per job (confirm in GET /v1/catalog) |
Sources
Related posts
More in Media tools
- How to brighten a dark video: exposure, gamma, or levels
Brighten a dark video with FFmpeg's exposure, eq gamma, or colorlevels filter, run as one Sume video filter job. To darken instead, use the dim op.
- How to burn an SRT file into a video
Burning an SRT file draws its lines into the picture. Sume's captions API takes no .srt file, so turn each block into a cue and send the cues instead.
- How to calculate speech rate in words per minute
Speech rate is words spoken divided by speaking time in minutes. Word timestamps from speech-to-text measure both, per recording or per sentence.
- How to color correct a video: fix a color cast and warmth
Color correct a video with FFmpeg filters on Sume: colorbalance removes a yellow or green cast, colortemperature sets warmth, and eq sets saturation.
Written by Sume