kimadactyl
kimadactyl

Reputation: 597

Mute specified sections of an audio file using ffmpeg

I have a JSON file containing regions that I want to mute in a given audio file. How can I process the audio file to mute the file between the listed sections?

Upvotes: 35

Views: 16993

Answers (2)

Harry
Harry

Reputation: 1277

I came across this post because I was trying to see how to lower sections of audio in a video.

For example, I want the volume between 34 to 35 minutes, 37 to 40 minutes, 0.1 times of the input volume. Below works for me and hope it works for others who are after the same task:

C:\ffmpeg-4.4-full_build\bin>ffmpeg -i in_video.mp4 -filter:a "volume=enable='between(t,34*60,35*60)':volume=0.1, volume=enable='between(t,37*60,40*60)':volume=0.1" -vcodec copy out_video.mp4

Note the time in between needs to be seconds.

Refer to the link below for more info about the audio volume filter (-filter:a). https://trac.ffmpeg.org/wiki/AudioVolume

Upvotes: 2

aergistal
aergistal

Reputation: 31209

The following command will mute two sections: between 5-10s and 15-20s:

ffmpeg -i video.mp4 -af "volume=enable='between(t,5,10)':volume=0, volume=enable='between(t,15,20)':volume=0" ...

Description:

-af is the audio filter. It works by specifying multiple volume filters that are enabled/disabled at the specified time. volume=enable='between(t,5,10)':volume=0 means use a volume filter that gets enabled between 5 and 10 seconds and sets the volume to 0.

Upvotes: 64

Related Questions