When making my Guinness
application record video, I wanted to include a time display in the
video and Guinness also required a running count display. I ended up
writing a Python
script using OpenCV2 to generate a video of the time and lap count,
and overlaid it with the main video in Adobe Premiere Rush.
Since then, I wrote a web-based tool for
generating a WebP animation of a timer and text synchronized to a set of
times. The timer can be in seconds or tenths of a second, and you can
specify a list of text messages and the times to display them (or to
hide them). You can then overlay it on a video in Premiere Rush or Pro.
There is alpha support, so you can have a transparent or translucent
background if you like, and a bunch of fonts to choose from (including
the geeky-looking Hershey font that I used in my Python script.)
The code uses webpxmux.js, though
it was a little bit tricky because in-browser Javascript may not have
enough memory to store all the uncompressed images that webpxmux.js
needs to generate an animation. So instead I encode each frame to WebP
using webpxmux.js, extract the compressed ALPH and VP8 chunks from the
WebP file, and store only the compressed chunks, writing them all at the
end. (It would be even better from the memory point of view to write the
chunks one by one rather than storing them in memory, but a WebP file
has a filesize in its header, and that’s not known until all the
compressed chunks have been generated. One could get around this
limitation by generating the video twice, but that would be twice as
slow.)