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
- 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.
- HeyGen API avatar ID and voice ID: where to find them
In HeyGen's v3 API, avatar_id is a look id from GET /v3/avatars/looks, and voice_id comes from GET /v3/voices or the look's default voice.
- HeyGen API key: get one and make your first video
Generate a HeyGen API key in its API dashboard, send it as X-Api-Key to api.heygen.com, check it with GET /v3/users/me, then create a video.
- HeyGen API v2 retirement: the date and the v3 endpoints
HeyGen's API v1 and v2 stay operational until October 31, 2026 and retire on November 1. The warning headers, and the v3 call for each v2 call.
Written by Sume