iGenerate title slides in separate script - bitreich-tv - Meme TV encoding and streaming Err bitreich.org 70
hgit clone git://bitreich.org/bitreich-tv git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-tv URL:git://bitreich.org/bitreich-tv git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-tv bitreich.org 70
1Log /scm/bitreich-tv/log.gph bitreich.org 70
1Files /scm/bitreich-tv/files.gph bitreich.org 70
1Refs /scm/bitreich-tv/refs.gph bitreich.org 70
1Tags /scm/bitreich-tv/tag bitreich.org 70
1LICENSE /scm/bitreich-tv/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 514e6788b34aa2fea81e685a03b0f0bc9e449157 /scm/bitreich-tv/commit/514e6788b34aa2fea81e685a03b0f0bc9e449157.gph bitreich.org 70
1parent 9e67470e2373361dea9c5707f30323bff524023d /scm/bitreich-tv/commit/9e67470e2373361dea9c5707f30323bff524023d.gph bitreich.org 70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk> URL:mailto:anders@adamsgaard.dk bitreich.org 70
iDate: Sun, 16 Aug 2020 20:09:05 +0200 Err bitreich.org 70
i Err bitreich.org 70
iGenerate title slides in separate script Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i A brtv-generate-title-slides.sh | 64 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 64 insertions(+), 0 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/brtv-generate-title-slides.sh b/brtv-generate-title-slides.sh /scm/bitreich-tv/file/brtv-generate-title-slides.sh.gph bitreich.org 70
i@@ -0,0 +1,64 @@ Err bitreich.org 70
i+#!/bin/sh Err bitreich.org 70
i+# generate title slide animation for each hashtag in file specified by stdin. Err bitreich.org 70
i+# stdin would typically be annna's module/hashtags/hashtags.txt Err bitreich.org 70
i+# requirements: ffmpeg(1), convert(1) Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i+### CONFIGURATION START Err bitreich.org 70
i+ Err bitreich.org 70
i+# output title animations dir Err bitreich.org 70
i+title="title" Err bitreich.org 70
i+ Err bitreich.org 70
i+# ffmpeg flags for generated videos Err bitreich.org 70
i+video_ext="webm" Err bitreich.org 70
i+ffmpeg_codec="-loglevel error -acodec libopus -b:a 96K -vcodec libvpx -b:v 64k -f webm -vf scale=1280:-1 -r 30 -ac 2" Err bitreich.org 70
i+ Err bitreich.org 70
i+# target video resolution Err bitreich.org 70
i+video_resolution=1280x720 Err bitreich.org 70
i+ Err bitreich.org 70
i+# slide style Err bitreich.org 70
i+bgcolor=magenta Err bitreich.org 70
i+fcolor=white Err bitreich.org 70
i+ Err bitreich.org 70
i+# show title slides for this duration [s] Err bitreich.org 70
i+title_display_time=5 Err bitreich.org 70
i+ Err bitreich.org 70
i+### CONFIGURATION END Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i+die() { Err bitreich.org 70
i+ printf '%s: error: %s\n' "${0##*/}" "$1" >&2 Err bitreich.org 70
i+ exit 1 Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+regeximatch() { Err bitreich.org 70
i+ printf '%s' "$1" | grep -iEq "$2" Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+if [ $# -ne 1 ]; then Err bitreich.org 70
i+ die "usage: ${0##*/} <hashtags-file>" Err bitreich.org 70
i+fi Err bitreich.org 70
i+ Err bitreich.org 70
i+title_slide() { Err bitreich.org 70
i+ img="$(basename "${1%.*}".png)" Err bitreich.org 70
i+ printf 'title_slide %s -> %s\n' "$1" "$img" Err bitreich.org 70
i+ convert -size "$video_resolution" "xc:${bgcolor}" \ Err bitreich.org 70
i+ -pointsize 48 -fill "$fgcolor" \ Err bitreich.org 70
i+ -gravity center -draw "text 0,0 '#${img%.*}'" "$img" Err bitreich.org 70
i+ ffmpeg -y \ Err bitreich.org 70
i+ -f lavfi \ Err bitreich.org 70
i+ -i anullsrc=r=48000 \ Err bitreich.org 70
i+ -i "$img" \ Err bitreich.org 70
i+ -t "${title_display_time}" \ Err bitreich.org 70
i+ $ffmpeg_codec \ Err bitreich.org 70
i+ "$2" && rm "$img" Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+mkdir -p "$title" Err bitreich.org 70
i+ Err bitreich.org 70
i+# make title slide for every file in $1/ if they do not already exist Err bitreich.org 70
i+while IFS=' Err bitreich.org 70
i+' read -r line; do Err bitreich.org 70
i+ out_path="${title}/$(basename "${f%.*}.${video_ext}")" Err bitreich.org 70
i+ [ ! -f "$out_path" ] && title_slide "$f" "$out_path" Err bitreich.org 70
i+done Err bitreich.org 70
.
Response:
text/plain