Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Remove Silence from Videos with Ffmpeg (github.com/bambax)
38 points by bambax on June 18, 2022 | hide | past | favorite | 1 comment
There was recently a Show HN for a program that lets one remove silence from video files [0]. I was almost certain that ffmpeg could do this...

But after searching for it, it turned out I was wrong: ffmpeg can't do this out of the box, and also can't read input from an EDL file [1].

So I set out to write a solution, as simple as possible: produce a list of select filters that are applied to video and audio, and retain only the non-silent parts.

The 'silencedetect' audio filter detects silences, and produces timestamps for when silences start and end. So one can pipe the output of that to a Python script, that builds an ffmpeg command with the appropriate select filters.

The resulting ffmpeg command can be run to re-encode the video without the silent parts.

Hope this helps.

- - -

Notes:

1/ I did find something somewhat similar to what I ended up doing [2], but it's complicated, and does the video encoding inside of Python. Granted, moviepy uses ffmpeg under the hood, but it's still better if ffmpeg does all the encoding directly.

2/ This solution doesn't produce a myriad of intermediary files that it would recombine afterwards; there is just one encoding of the output video file. 'silencedetect' is very fast, so all in all running this should be pretty fast.

[0] https://news.ycombinator.com/item?id=31767830

[1] https://en.wikipedia.org/wiki/Edit_decision_list

[2] https://donaldfeury.xyz/remove-the-silent-parts-of-a-video-u...



Some more info:

- Tested on the files in the /test directory; but not tested on files that have many different audio and video streams

- Could be complemented to add the ability to run on a smaller part of the file to verify the silent triggers (but the output ffmpeg command can be edited before it's run, if necessary)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: