brtv-generate-title-slides.sh - bitreich-tv - Meme TV encoding and streaming
HTML git clone git://bitreich.org/bitreich-tv git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-tv
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR LICENSE
---
brtv-generate-title-slides.sh (1626B)
---
1 #!/bin/sh
2 # generate title slide animation for each hashtag in file specified by stdin.
3 # stdin would typically be annna's module/hashtags/hashtags.txt
4 # requirements: ffmpeg(1), convert(1)
5
6
7 ### CONFIGURATION START
8
9 # output title animations dir
10 title="/br/gopher/tv/title"
11
12 # ffmpeg flags for generated videos
13 video_ext="webm"
14 ffmpeg_codec="-loglevel error -acodec libopus -b:a 96K -f webm -vf scale=1280:-1 -r 30 -ac 2"
15
16 # target video resolution
17 video_resolution=1280x720
18
19 # slide style
20 # xc:$color ( https://imagemagick.org/script/color.php )
21 # /some/file.png
22 bgcontent=/br/gopher/tv/bitreich-tv-bg.png
23 fgcontent=/br/gopher/tv/bitreich-tv-title-fg.png
24
25 # show title slides for this duration [s]
26 title_display_time=5
27
28 # logo to draw in background
29 logo="bitreichtv.vtv"
30
31 ### CONFIGURATION END
32
33
34 temp="$(mktemp).png"
35
36 title_slide() {
37 # Don't forget the whitespace at the end of the logo.
38 convert -font "Liberation-Mono" \
39 -size "$video_resolution" \
40 "${bgcontent}" \
41 "${fgcontent}" \
42 -gravity center \
43 -composite \
44 -stroke '#000000' \
45 -strokewidth 2 \
46 -fill '#FFFFFF' \
47 -gravity north \
48 -pointsize 13 \
49 -draw "text -70,240 '$(cat "$logo")' " \
50 -draw "text -70,520 'Playing: ${1}'" \
51 "$temp"
52
53 ffmpeg -y \
54 -f lavfi \
55 -i anullsrc=r=48000 \
56 -i "$temp" \
57 -t "${title_display_time}" \
58 $ffmpeg_codec \
59 "$2" < /dev/null
60 printf '%s\n' "$2"
61 }
62
63 mkdir -p "$title"
64
65 # make title slide for every tag in first column of stdin
66 # (if title slide doesn't already exist)
67 while read -r tag url; do
68 out="${title}/${tag#\#}.${video_ext}"
69 if [ ! -f "$out" ]; then
70 title_slide "$tag" "$out"
71 fi
72 done