docs/demo/render.sh

e2a32d5f8d59e4213571c602bd9009b6c8fa86ed
gitbay/docs/demo/render.sh history · blame · raw

30 lines · 1251 bytes · executable

 1#!/bin/sh
 2# Render tapes to frames with vhs and encode them here: vhs 0.12's own
 3# ffmpeg step writes nothing under ffmpeg 9. Several tapes are joined in
 4# order. A tape already recorded is reused: the tapes write to gitbay.org,
 5# so delete docs/demo/out/<name> to record one again. Writes
 6# docs/demo/out/demo.{mp4,webm,gif}.
 7#
 8#   DEMO_CODE=<mailed code> docs/demo/render.sh signup verify ship
 9set -eu
10cd "$(dirname "$0")/../.."
11out=docs/demo/out
12bg=0b0b0b
13list=$out/concat.txt
14mkdir -p "$out"
15: > "$list"
16for name in "$@"; do
17	[ -d "$out/$name" ] || vhs "docs/demo/$name.tape"
18	ffmpeg -loglevel error -y \
19		-framerate 50 -i "$out/$name/frame-text-%05d.png" \
20		-framerate 50 -i "$out/$name/frame-cursor-%05d.png" \
21		-filter_complex "[0][1]overlay,pad=1248:688:32:32:color=$bg" \
22		-c:v libx264 -pix_fmt yuv420p -r 25 "$out/$name.mp4"
23	echo "file '$name.mp4'" >> "$list"
24done
25ffmpeg -loglevel error -y -f concat -safe 0 -i "$list" -c copy "$out/demo.mp4"
26ffmpeg -loglevel error -y -i "$out/demo.mp4" -c:v libvpx-vp9 -b:v 0 -crf 40 "$out/demo.webm"
27ffmpeg -loglevel error -y -i "$out/demo.mp4" \
28	-vf "fps=10,scale=960:-1:flags=lanczos,split[a][b];[a]palettegen=max_colors=32[p];[b][p]paletteuse=dither=none" \
29	"$out/demo.gif"
30ls -l "$out"/demo.*