commit 02c0fc491be147c4438d80ca59557b02fdffce21
parent ac639f0d7f8feadca0ef246d65bcc039fd73e90a
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Sun, 16 Aug 2020 22:20:50 +0200
Remove old wip script
Diffstat:
D | brtv-start.sh | | | 166 | ------------------------------------------------------------------------------- |
1 file changed, 0 insertions(+), 166 deletions(-)
diff --git a/brtv-start.sh b/brtv-start.sh
@@ -1,166 +0,0 @@
-#!/bin/sh
-# generate title animations and start streaming to server
-# requirements: ffmpeg(1), convert(1)
-
-### CONFIGURATION START
-
-# intermediate playlist file
-playlist="playlist_$(date +%Y-%m-%d)"
-
-# memecache source dir
-memecache="$1"
-
-# converted memecache dir
-memecache_conv="memecache_conv"
-
-# title animations dir
-title="title"
-
-# ffmpeg flags for generated videos
-video_ext="webm"
-ffmpeg_codec="-loglevel error -acodec libopus -b:a 96K -vcodec libvpx -b:v 64k -f webm -vf scale=1280:-1 -r 30 -ac 2"
-out_video="brtv_$(date +%Y-%m-%d).${video_ext}"
-#out_video_duration="24:00:00"
-out_video_duration="00:05:00"
-
-# target video resolution
-video_resolution=1280x720
-
-# slide style
-bgcolor=magenta
-fcolor=white
-
-# show image memes for this duration [s]
-image_display_time=10
-
-# show title slides for this duration [s]
-title_display_time=5
-
-### CONFIGURATION END
-
-pass="$(gpg2 -q -d icecastpass.gpg)"
-
-die() {
- printf '%s: error: %s\n' "${0##*/}" "$1" >&2
- exit 1
-}
-
-regeximatch() {
- printf '%s' "$1" | grep -iEq "$2"
-}
-
-if [ $# -ne 1 ]; then
- die "usage: ${0##*/} <memecache_path>"
-fi
-
-fit_img_16_9() {
- convert -resize "$video_resolution"\> -size "$video_resolution" "$1" \
- xc:"$bgcolor" +swap -gravity center -composite "$2"
-}
-
-video_from_img() {
- printf 'image to video %s -> %s\n' "$1" "$2"
- ffmpeg -y \
- -f lavfi \
- -i anullsrc=r=48000 \
- -i "$1" \
- -t "${image_display_time}" \
- $ffmpeg_codec \
- "$2";
-}
-
-title_slide() {
- img="$(basename "${1%.*}".png)"
- printf 'title_slide %s -> %s\n' "$1" "$img"
- convert -size "$video_resolution" "xc:${bgcolor}" \
- -pointsize 48 -fill "$fgcolor" \
- -gravity center -draw "text 0,0 '#${img%.*}'" "$img"
- ffmpeg -y \
- -f lavfi \
- -i anullsrc=r=48000 \
- -i "$img" \
- -t "${title_display_time}" \
- $ffmpeg_codec \
- "$2" && rm "$img"
-}
-
-video_conv() {
- printf 'encode %s -> %s\n' "$1" "$2"
- if ! regeximatch "$(file -ib "$f")" "^video\/"; then
- die "input video $1 is invalid ($(file -b "$1"))"
- fi
- ffmpeg -y -i "$1" $ffmpeg_codec "$2"
-}
-
-mkdir -p "$title"
-mkdir -p "$memecache_conv"
-
-# generate video from each image
-for f in "$memecache"/*.jpg \
- "$memecache"/*.jpeg \
- "$memecache"/*.JPG \
- "$memecache"/*.png \
- "$memecache"/*.PNG; do
- out="${memecache_conv}/$(basename "${f%.*}.${video_ext}")"
- if [ ! -f "$out" ]; then
- if ! regeximatch "$(file -ib "$f")" "^image\/"; then
- die "input image $f is invalid ($(file -b "$f"))"
- fi
- printf 'in: %s, out: %s\n' "$f" "$out"
- fit_img_16_9 "$f" "${out%.*}.jpg"
- video_from_img "${out%.${video_ext}}.jpg" "${out}"
- fi
-done
-
-# make animation for fallback stream
-if [ ! -f "bitreich-tv.${video_ext}" ]; then
- title_slide bitreich-tv bitreich-tv.${video_ext}
-fi
-
-# make title slides for video and converted images and encode all video clips to common codec
-for f in "$memecache"/*.mkv \
- "$memecache"/*.mp4 \
- "$memecache"/*.webm \
- "$memecache_conv"/*."${video_ext}"; do
-
- title_path="${title}/$(basename "${f%.*}.${video_ext}")"
- [ ! -f "$title_path" ] && title_slide "$f" "$title_path"
-
- out="${memecache_conv}/$(basename "${f%.*}.${video_ext}")"
- [ ! -f "$out" ] && video_conv "$f" "$out"
-done
-
-# generate random playlist from converted memes and add title slides
-find "$memecache_conv" -maxdepth 1 -name "*.webm" -type f | \
- sort -R | \
- awk -v memecachedir="$memecache" -v titledir="$title" '
- function add_title(s) {
- sub(/memecache/, "title", s);
- return s
- }
- {line=$0;
- print "file \""add_title($line)"\"";
- print "file \""$0"\""}' | sed "s/\"/'/g" > "$playlist"
-
-#printf '\nstarting fallback stream\n'
-#ffmpeg -loglevel quiet \
-# -stream_loop -1 -i bitreich-tv.webm
-# -f webm -codec copy
-# icecast://source:${pass}@localhost:8000/brtvfallback
-
-
-# encode daily video file
-ffmpeg -n -f concat -safe 0 -i "$playlist" \
- -f "${video_ext}" -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm \
- -codec copy \
- -to "$out_video_duration"
- "$video_out"
-
-printf '\nstarting stream\n'
-
-ffmpeg -f concat -safe 0 -stream_loop -1 -i "$video_out" \
- -f webm -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm \
- -analyzeduration 2M -probesize 2M \
- -codec copy \
- -deadline realtime -threads 4 \
- icecast://source:${pass}@adamsgaard.dk:3232/brtv