FFmpeg increase volume: the volume filter, in dB or ×
Increase volume in FFmpeg with -af volume: volume=2 or volume=6dB, with -c:v copy so the video isn't re-encoded. Check headroom with volumedetect first.

To increase volume with FFmpeg, apply the volume audio filter and copy the video stream: ffmpeg -i input.mp4 -af "volume=6dB" -c:v copy output.mp4 raises the sound by 6 dB, and volume=2 multiplies it by 2 instead. Only the audio is re-encoded. Run volumedetect first, because anything pushed past the maximum level is clipped.
The FFmpeg behavior below is quoted from the FFmpeg filters documentation, the ffmpeg documentation and the FFmpeg formats documentation, and the Sume facts come from the Timeline 1.0 docs, all read on 2026-09-29. Anything called current behavior is read from Sume's code. The commands were run with FFmpeg 9.0.1 on a 5-second test clip.
How much can I raise the volume without clipping?
As much as the loudest sample is below full scale. volumedetect prints mean_volume and max_volume in decibels relative to the maximum PCM value, so the headroom is the max_volume figure without its minus sign. FFmpeg's own example: a max_volume of −4 dB means raising the volume by +4 dB causes no clipping.
- On the test clip, the second pass measured a
mean_volumeof −35.1 dB: 6 dB up. - For an audio-only file, drop
-c:v copy:ffmpeg -i input.mp3 -af "volume=6dB" output.mp3. -c:v copyworks because only the audio passes through a filter. Filters work on decoded frames, so the audio track is always re-encoded.
# Measure: -vn skips the picture, -f null writes no file
ffmpeg -i input.mp4 -af volumedetect -vn -f null -
# [Parsed_volumedetect_0 ...] mean_volume: -41.1 dB
# [Parsed_volumedetect_0 ...] max_volume: -37.6 dB
# Raise by 6 dB and keep the video stream as it is
ffmpeg -i input.mp4 -af "volume=6dB" -c:v copy output.mp4What values does the volume filter take?
The output volume is volume * input_volume, and the value can be a plain multiplier, a fraction or a decibel figure. To make a file quieter, use a value under 1 or a negative dB.
| Filter or option | What the docs say |
|---|---|
volume=2, volume=6dB | Multiplier or decibels; default 1.0 |
volume=0.5, volume=1/2, volume=-6.0206dB | Three ways to halve the volume |
| Over the limit | Output values are clipped to the maximum value |
eval=frame | Re-evaluate the expression per frame, e.g. to change volume over time; default once |
volumedetect | No parameters; prints mean and max volume when the stream ends |
loudnorm I | Integrated loudness target, −70.0 to −5.0; default −24.0 |
loudnorm TP | Maximum true peak, −9.0 to 0.0; default −2.0 |
loudnorm LRA | Loudness range target, 1.0 to 50.0; default 7.0 |
How do I normalize audio with FFmpeg instead?
Use loudnorm when you want a loudness target rather than a fixed gain, for example to make a batch of clips play at the same level. It is EBU R128 loudness normalization and can target integrated loudness, loudness range and maximum true peak. Pick the I value the platform you publish to asks for; the example below uses −16 only as an illustration.
- In dynamic mode the filter upsamples the audio to 192 kHz to detect true peaks, so set the output rate with
-ar, as the docs advise. - A single pass works on files and live streams. For a linear, two-pass result, measure first and pass the
measured_I,measured_LRA,measured_TPandmeasured_threshvalues back in; if the conditions aren't met, it falls back to dynamic mode. - On the test clip, the command above measured a
mean_volumeof −15.3 dB afterwards, from −41.1 dB.
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" -ar 48000 -c:v copy output.mp4Can I increase the volume of a video on Sume?
Yes, for a clip that's already on media.sume.com, such as an earlier Sume job's output, but not by sending FFmpeg arguments: Timeline 1.0 compiles the command itself and refuses a request with filtergraph or ffmpeg_args. The gain control is audio.gain_db, from −60 to 12 dB on the render's audio spine; Replace or remove audio in a video walks through detaching the sound and rendering it back louder.
- In current code, a Timeline render takes sound only from the spine and the optional soundtrack; each clip's own audio is dropped, so the louder sound has to be on the spine.
- A render is $0.10 per output minute, plus a 5.5% agent fee by default.
Sources
Related posts
More in Developers
- FLUX.2 multi-reference editing API: how many images can I send?
FLUX.2 edits from several reference images. Black Forest Labs' API takes up to 8; Sume's flux.2-pro catalog row lists up to 10 input_references.
- Cap what one Format run can spend with generation_spend_cap_usd
Every Sume Format run has a generation spend cap. Send generation_spend_cap_usd to set it: up to 500, null runs at 500, 0 is rejected. What happens at the cap.
- Gemini 3.8 Flash function calling: let it start a Sume video job
Declare a function for Gemini 3.8 Flash, run it against Sume's /v1/videos when the model returns a functionCall, and reply with a functionResponse with job id.
- Golang HTTP client retry: what net/http retries on POST
Go's http.Transport retries only network errors on reused connections, and a POST only with an Idempotency-Key header. Write the 429 and 5xx loop yourself.
Written by Sume