New video clipping script
This commit is contained in:
parent
584e30ca71
commit
70746f32f5
55
video/slow-mo-clip.sh
Normal file
55
video/slow-mo-clip.sh
Normal file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# This script allows me to take mp4 files and clip+slow them down for interesting slow mo clips :^)
|
||||
# Magic is at the bottom the rest is just interfacing
|
||||
|
||||
|
||||
if [ -z "$3" ]; then
|
||||
cat <<- EOF
|
||||
Usage: slow-mo.sh /path/to/file.mp4 HH:MM:SS[.ms] HH:MM:SS[.ms]
|
||||
Note:
|
||||
.ms (miliseconds) optional as they are not required to make this script work but
|
||||
ffmpeg does understand the field
|
||||
|
||||
Alternative flags( environment variables ):
|
||||
REMOVE_AUDIO
|
||||
When this is set the audio output is disabled
|
||||
SLOW_RATE
|
||||
2.0 => Half speed
|
||||
3.0 => 3x slower
|
||||
Formula is 1 / RATE => OutputRate
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If this gets set then we do not create the first clip with audio
|
||||
case "$REMOVE_AUDIO" in
|
||||
true)
|
||||
echo "Audio: DISABLED"
|
||||
FFMPEG_COPY="-c copy -an"
|
||||
;;
|
||||
*)
|
||||
echo "Audio: ENABLED"
|
||||
FFMPEG_COPY="-c:v copy"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Aliasing input variables
|
||||
input="$1"
|
||||
starttime="$2"
|
||||
endtime="$3"
|
||||
|
||||
SLOW_RATE=2.0
|
||||
# Make ffmpeg be quiet
|
||||
LOG="-loglevel error"
|
||||
|
||||
clip="$input-clip.mp4"
|
||||
|
||||
echo "Cutting desired section from $2 to $3..."
|
||||
ffmpeg $LOG -y -i "$input" -ss "$starttime" -to "$endtime" $FFMPEG_COPY "$clip"
|
||||
|
||||
echo "Slowing down video now"
|
||||
ffmpeg $LOG -y -i "$clip" -vf "setpts=$SLOW_RATE*PTS" "$input.slow.mp4"
|
||||
|
Loading…
Reference in New Issue
Block a user