Last active
January 22, 2024 10:13
-
-
Save shazow/dcb5c6744d1837bed6d2 to your computer and use it in GitHub Desktop.
Batch convert a directory of gifs into mp4
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 characters
#!/usr/bin/bash | |
# Convert *.gif into *.mp4, skip if already exists. | |
outdir="." | |
for path in *.gif; do | |
out="${outdir}/${path/.gif/}.mp4" | |
[[ -f "$out" ]] && continue | |
ffmpeg -f gif -i "${path}" "${out}" | |
done |
Thanks! This works perfect.
But I updated to this:
for path in *.gif; do out="${outdir}/${path/.gif/}.mp4"; [[ -f "$out" ]] && continue; ffmpeg -f gif -i "${path}" -pix_fmt yuv420p "${out}"; done
That way the output works in Quicktime
is there an easy way to modify this script to do this for subdirs also, leaving an mp4 in place, and moving the gif out to a mirrored structure in another location?
@qwksilver You'll need to use something like find
to get all the gifs. Rough sketch:
find . -path '*.gif' | while read path; do
...
done
Then do the rest of the changes you want. :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Feel free to copy-and-paste the body into your shell while in the dir with *.gif files, or download the file and: