ffmpeg
Last update: February 3, 2023
ffmpeg is one of my favorite command line tool, I'm always amazed by what it's possible to do with it!
I use it quite often for generative art pieces.
Scaling
ffmpeg -i input.mp4 -vf scale=1024:768 output.mp4
ffmpeg -i input.mp4 -vf scale=320:-1 output.mp4 # Keep aspect ratio
Cropping
ffmpeg -i 50.mp4 -filter:v "crop=480:360:0:60" 50.2.mp4
ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4
Image incrustation
ffmpeg -i input.mp4 -i image.png \
-filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" \
-pix_fmt yuv420p -c:a copy \
output.mp4
Encode from image list
-framerate = input framerate
-r = output framerate
ffmpeg -framerate 50 -i video_%06d.png -r 50 -pix_fmt yuv420p output.mp4
Scale video
ffmpeg -i in.mp4 -acodec copy -crf 12 -vf scale=1080:1920,setsar=1:1 out.mp4
Convert GIF in videos
for f in *.gif \
do ffmpeg -f gif -i $f -vcodec mpeg4 -y mp4/$f.mp4 \
done
Accelerate video
Here it's by a factor ten (0.1*)
ffmpeg -i in.mp4 -filter:v "setpts=0.1*PTS" -an out.mp4
Get video length in seconds
ffprobe -i file.mp4 -show_entries format=duration -v quiet -of csv="p=0"
or summing multiples:
sum=0
for f in *.mp4 \
do sum=$(echo $sum + $(ffprobe -i $f -show_entries format=duration -v quiet -of csv="p=0") | bc) \
done \
echo $sum;
APNG
My goal was to get a bunch of PNG frames and make an animation in photoshop, the easiest path has been:
ffmpeg -pattern_type glob -i '*.png' video.apng
- then opening this file and converting it to PSD through the website: https://www.photopea.com
- then in Photoshop on the animation panel menu (top right of the panel) "Create images from layers"