Skip to content

Instantly share code, notes, and snippets.

@donat-b
Created July 30, 2018 20:00
Show Gist options
  • Save donat-b/b2cb57463d12005240de0459dd9fc209 to your computer and use it in GitHub Desktop.
Save donat-b/b2cb57463d12005240de0459dd9fc209 to your computer and use it in GitHub Desktop.
vidstab
#!/usr/bin/env zsh
# batch convert video
setopt ERR_EXIT NO_UNSET
function main() {
typeset -r vcodec='libx265'
typeset -r acodec='libvorbis'
typeset -ri crf=24
typeset -ri fps=25
typeset -ri vs_zoom=20
typeset -ri vs_optzoom=2
typeset -ri vs_zoomspeed=1
typeset -r preset=ultrafast
for f in $@; do
path_noext=$(echo $f | rev | cut -d. -f'2-' | rev)
fn_noext=$(basename $path_noext)
if [[ ! -e "${fn_noext}.trf" ]]; then
printf '= = = = = = = = = = first pass = = = = = = = = = =\n\n'
ffmpeg -i "$f" -an -f null \
-vf \
"vidstabdetect=shakiness=10:accuracy=15:result='${fn_noext}.trf_incomplete'"\
/dev/null
mv "${fn_noext}.trf_incomplete" "${fn_noext}.trf"
else
printf 'Skipped first pass\n'
fi
printf '= = = = = = = = = = second pass = = = = = = = = = =\n\n'
ffmpeg -i "$f" \
-vcodec $vcodec -crf $crf -preset $preset -acodec $acodec -r $fps \
-err_detect ignore_err -cpuflags -sse2 \
-vf \
"vidstabtransform=zoom=$vs_zoom:optzoom=$vs_optzoom:zoomspeed=$vs_zoomspeed:
interpol=bicubic:input='${fn_noext}.trf'",\
"scale=1920:-1:flags=lanczos"\
-y "${fn_noext}_vidstab.mkv"
#rm -v "${fn_noext}.trf"
done
}
main $@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment