SMOLNET PORTAL home about changes
iFix title and image viewing duration, create fallback stream - bitreich-memestats - Bitreich meme statistics and graphs.	Err	bitreich.org	70
hgit clone git://bitreich.org/bitreich-memestats git://hg6vgqziawt5s4dj.onion/bitreich-memestats	URL:git://bitreich.org/bitreich-memestats git://hg6vgqziawt5s4dj.onion/bitreich-memestats	bitreich.org	70
1Log	/scm/bitreich-memestats/log.gph	bitreich.org	70
1Files	/scm/bitreich-memestats/files.gph	bitreich.org	70
1Refs	/scm/bitreich-memestats/refs.gph	bitreich.org	70
1Tags	/scm/bitreich-memestats/tag	bitreich.org	70
1LICENSE	/scm/bitreich-memestats/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 3c3d3a067be47f9db268d4817d937a49ecf5f051	/scm/bitreich-memestats/commit/3c3d3a067be47f9db268d4817d937a49ecf5f051.gph	bitreich.org	70
1parent 9a39dea48b13099733de2f6ff98de64901702b09	/scm/bitreich-memestats/commit/9a39dea48b13099733de2f6ff98de64901702b09.gph	bitreich.org	70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk>	URL:mailto:anders@adamsgaard.dk	bitreich.org	70
iDate:   Thu, 11 Jun 2020 13:42:37 +0000	Err	bitreich.org	70
i	Err	bitreich.org	70
iFix title and image viewing duration, create fallback stream	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M brtv-start.sh                       |     100 ++++++++++++++++++-------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 57 insertions(+), 43 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/brtv-start.sh b/brtv-start.sh	/scm/bitreich-memestats/file/brtv-start.sh.gph	bitreich.org	70
i@@ -1,6 +1,5 @@	Err	bitreich.org	70
i #!/bin/sh	Err	bitreich.org	70
i-# start streaming server, but beforehand reencode memecache and	Err	bitreich.org	70
i-# generate title animations if necessary	Err	bitreich.org	70
i+# generate title animations and start streaming server	Err	bitreich.org	70
i 	Err	bitreich.org	70
i if [ $# -ne 1 ]; then	Err	bitreich.org	70
i         printf 'usage: %s <memecache_path>\n' "$0" >&2	Err	bitreich.org	70
i@@ -9,24 +8,23 @@ fi	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ### CONFIGURATION START	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# mkv streaming server executable	Err	bitreich.org	70
i-# git://github.com/klaxa/mkvserver_mk2	Err	bitreich.org	70
i-bin=mkvserver_mk2	Err	bitreich.org	70
i+# streaming server executable	Err	bitreich.org	70
i+#bin=vlc	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# intermediate playlist file	Err	bitreich.org	70
i+playlist="playlist"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # memecache source dir	Err	bitreich.org	70
i memecache="$1"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # converted memecache dir	Err	bitreich.org	70
i-memecache_conv=memecache	Err	bitreich.org	70
i+memecache_conv="memecache"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # title animations dir	Err	bitreich.org	70
i title="title"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# desired ffmpeg codec flags	Err	bitreich.org	70
i-ffmpeg_codec="-c:v libx264 -c:a libvorbis -f matroska"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# port for streaming socket (combined stream hosted on port 8080)	Err	bitreich.org	70
i-commport=12345	Err	bitreich.org	70
i+# ffmpeg codec flags for generated animations	Err	bitreich.org	70
i+ffmpeg_codec="-acodec libopus -b:a 96K -vcodec libvpx -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@@ -35,11 +33,11 @@ video_resolution=1280x720	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 image memes for this duration [s]	Err	bitreich.org	70
i+# show image memes for this duration, must be two digits [s]	Err	bitreich.org	70
i image_display_time=10	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+# show title slides for this duration, must be two digits [s]	Err	bitreich.org	70
i+title_display_time=05	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ### CONFIGURATION END	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -54,73 +52,89 @@ video_from_img() {	Err	bitreich.org	70
i                 -f lavfi \	Err	bitreich.org	70
i                 -i anullsrc=r=48000 \	Err	bitreich.org	70
i                 -i "$1" \	Err	bitreich.org	70
i-                -t "00:${3}:00" \	Err	bitreich.org	70
i+                -t "00:00:${image_display_time}" \	Err	bitreich.org	70
i                 $ffmpeg_codec \	Err	bitreich.org	70
i                 "$2";	Err	bitreich.org	70
i }	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-        convert -size "$video_resolution" "xc:${bgcolor}" -pointsize 48 -fill "$fgcolor" \	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 "00:${title_display_time}:00" \	Err	bitreich.org	70
i+                -t "00:00:${title_display_time}" \	Err	bitreich.org	70
i                 $ffmpec_codec \	Err	bitreich.org	70
i-                "$2";	Err	bitreich.org	70
i+                "$2" && rm "$img"	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i video_conv() {	Err	bitreich.org	70
i-        ffmpeg -y -i "$1" $ffmpeg_codec "$2"	Err	bitreich.org	70
i+        ffmpeg -y -i "$1" $ffmpeg_codec -max_muxing_queue_size 1024 "$2"	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-	Err	bitreich.org	70
i mkdir -p "$title"	Err	bitreich.org	70
i mkdir -p "$memecache_conv"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # generate video from each image	Err	bitreich.org	70
i-for f in "$memecache"/*.jpg "$memecache"/*.png "$memecache"/*.JPG; do	Err	bitreich.org	70
i-        out="${memecache_conv}/$(basename "${f%.*}.mkv")"	Err	bitreich.org	70
i-        if [ ! -e "$out" ]; then	Err	bitreich.org	70
i+for f in "$memecache"/*.jpg "$memecache"/*.JPG "$memecache"/*.png "$memecache"/*.PNG; do	Err	bitreich.org	70
i+        out="${memecache_conv}/$(basename "${f%.*}.webm")"	Err	bitreich.org	70
i+        if [ -e "$f" ] && [ ! -e "$out" ]; then	Err	bitreich.org	70
i+                printf 'in: %s, out: %s\n' "$f" "$out"	Err	bitreich.org	70
i                 fit_img_16_9 "$f" "${out%.*}.jpg"	Err	bitreich.org	70
i-                video_from_img "${out%.mkv}.jpg" "${out}" "${image_display_time}"	Err	bitreich.org	70
i+                video_from_img "${out%.webm}.jpg" "${out}"	Err	bitreich.org	70
i         fi	Err	bitreich.org	70
i done	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+# make animation for fallback stream	Err	bitreich.org	70
i+if [ ! -f bitreich-tv.webm ]; then	Err	bitreich.org	70
i+        title_slide bitreich-tv bitreich-tv.webm	Err	bitreich.org	70
i+fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i # make title slides for video and converted images and encode to common codec	Err	bitreich.org	70
i for f in "$memecache"/*.mkv \	Err	bitreich.org	70
i          "$memecache"/*.mp4 \	Err	bitreich.org	70
i                  "$memecache"/*.webm \	Err	bitreich.org	70
i-                 "$memecache_conv"/*.mkv; do	Err	bitreich.org	70
i+                 "$memecache_conv"/*.webm; do	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        title_path="${title}/$(basename "${f%.*}.mkv")"	Err	bitreich.org	70
i-        [ ! -e "${title_path}" ] && title_slide "$f" "$title_path"	Err	bitreich.org	70
i+        title_path="${title}/$(basename "${f%.*}.webm")"	Err	bitreich.org	70
i+        [ ! -e "$title_path" ] && title_slide "$f" "$title_path"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        out="${memecache_conv}/$(basename "${f%.*}.mkv")"	Err	bitreich.org	70
i-        [ ! -e "${out}" ] && video_conv "$f" "$out"	Err	bitreich.org	70
i+        out="${memecache_conv}/$(basename "${f%.*}.webm")"	Err	bitreich.org	70
i+        [ ! -e "$out" ] && video_conv "$f" "$out"	Err	bitreich.org	70
i done	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # generate random playlist from converted memes and add title slides	Err	bitreich.org	70
i-find "$memecache_conv" -maxdepth 1 -name "*.mkv" -type f | sort -R | \	Err	bitreich.org	70
i-        sed "s/^/file '/;s/$/'/" | \	Err	bitreich.org	70
i-        awk -v titledir="$title" '	Err	bitreich.org	70
i+find "$memecache_conv" -maxdepth 1 -name "*.webm" -type f | \	Err	bitreich.org	70
i+        sort -R | \	Err	bitreich.org	70
i+        awk -v memecachedir="$memecache" -v titledir="$title" '	Err	bitreich.org	70
i         function add_title(s) {	Err	bitreich.org	70
i-                sub(/\.\//, titledir"/", s);	Err	bitreich.org	70
i+                sub(/memecache/, "title", s);	Err	bitreich.org	70
i                 return s	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         {line=$0;	Err	bitreich.org	70
i-        print add_title($line);	Err	bitreich.org	70
i-        print $0}' > playlist	Err	bitreich.org	70
i+        print "file \""add_title($line)"\"";	Err	bitreich.org	70
i+        print "file \""$0"\""}' | sed "s/\"/'/g" > "$playlist"	Err	bitreich.org	70
i+        #print "file \""$0"\""}' | sed "s/\"/'/g" |grep -v title> "$playlist"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+printf '\nstarting fallback stream\n'	Err	bitreich.org	70
i+ffmpeg -loglevel quiet \	Err	bitreich.org	70
i+        -stream_loop -1 -i bitreich-tv.webm	Err	bitreich.org	70
i+        -f webm -codec copy	Err	bitreich.org	70
i+        icecast://source:hasselkospiserkrymmel@localhost:8000/brtvfallback	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+exit 0	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-netcat -l -p "$commport" | $bin >/dev/null 2>&1 &	Err	bitreich.org	70
i-sleep 2	Err	bitreich.org	70
i+sleep 5	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-ffmpeg -f concat -safe 0 -i playlist \	Err	bitreich.org	70
i-        -f matroska \	Err	bitreich.org	70
i-        $ffmpeg_codec \	Err	bitreich.org	70
i-        -max_muxing_queue_size 9999 \	Err	bitreich.org	70
i-        tcp://localhost:$commport	Err	bitreich.org	70
i+printf '\nstarting stream\n'	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-pkill $bin	Err	bitreich.org	70
i+ffmpeg -f concat -safe 0 -stream_loop -1 -i "$playlist" \	Err	bitreich.org	70
i+        -f webm -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm \	Err	bitreich.org	70
i+        -analyzeduration 2M -probesize 2M \	Err	bitreich.org	70
i+        -codec copy \	Err	bitreich.org	70
i+        -deadline realtime -threads 8 \	Err	bitreich.org	70
i+        icecast://source:hasselkospiserkrymmel@localhost:8000/brtv	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/bitreich-memestats/commit/3c3...
Content-Typetext/plain; charset=utf-8