Created
June 19, 2020 15:43
-
-
Save crazoter/0b62b71d7dc43cbd105a8ed36f82e60b to your computer and use it in GitHub Desktop.
Revisions
-
crazoter created this gist
Jun 19, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,24 @@ #!/bin/bash # silence_trim.sh - an old script I used a while back to trim silences from videos # Used on Ubuntu 18.04 LTS # Can trim videos 1-2hrs long within 10-20 minutes # Requires ffmpeg, ffprobe (ffprobe comes with ffmpeg) # Place the video you want to shorten named vid.mp4 into same folder as this script # Script will split video into several parts with sound and then merge said videos # It will then clean up and produce a "shortened-vid.mp4" # # BUG: There is a setting that makes ffmpeg directly remove silence trimming without re-encoding it; # this means that although it's faster, the video will appear choppy. Audio is good so it's not bad # for presentations / lectures but for actual video post-processing this is a no go # # Modify silencedetect params if it's not working well ffmpeg -i vid.mp4 -filter_complex "[0:a]silencedetect=n=-40dB:d=0.3[outa]" -map [outa] -f s16le -y /dev/null |& F='-aq 30 -c copy -v warning' perl -ne 'INIT { $ss=0; $se=0; } if (/silence_start: (\S+)/) { $ss=$1; $ctr+=1; printf "ffmpeg -nostdin -i vid.mp4 -ss %f -t %f $ENV{F} -c copy -y %05d.mkv\n", $se, ($ss-$se), $ctr; } if (/silence_end: (\S+)/) { $se=$1; } END { printf "ffmpeg -nostdin -i vid.mp4 -ss %f $ENV{F} -c copy -y %05d.mkv\n", $se, $ctr+1; }' | bash -x for f in *.mkv ; do if ! ffprobe -loglevel error "$f" 2>&1 | grep "End of file"; then echo file \'"$f"\' >> list.txt; fi; done ffmpeg -f concat -safe 0 -i list.txt -c copy shortened-vid.mp4 # Commented out as there were some issues with deleting thousands of files on LTS # rm ./*mkv # rm ./list.txt