vydd / sketch

A Common Lisp framework for the creation of electronic art, visual design, game prototyping, game making, computer graphics, exploration of human-computer interaction, and more.
MIT License
1.39k stars 66 forks source link

Support for saving animations #116

Open Kevinpgalligan opened 8 months ago

Kevinpgalligan commented 8 months ago

It's currently a hassle to capture a video of an entire sketch. Once the sketch window shows up, it is often too late to start recording. The user can build a delay into their sketch to give themselves more time, or they can save a PNG in each frame and then stitch those together using external software like ffmpeg. However, I think it would be more user-friendly to have built-in support for saving animations.

I initially considered the skippy package, since it's native CL, but I'm not sure that GIF is the best output format given that (from my understanding) it doesn't support transparency and requires that colours be mapped to a limited palette. So, it might be better to just require a dependency on some video-encoding library that there are CL bindings for.

(Yes, there are probably more convenient workarounds for this using external software, but that all falls under the category of "extra hassle for the user").

vydd commented 7 months ago

I wouldn't say it's a high priority, but if there's an easy way to do it - go for it! If there's a huge amount of dependencies, maybe it can live in another system, e.g. sketch-extras.

Kevinpgalligan commented 6 months ago

I asked around on the #commonlisp IRC channel, Josh_2 generously shared their code for transcoding between video formats using a uiop:run-program call to ffmpeg:

https://plaster.tymoon.eu/view/4042#4042

I think I'll try something similar.