iAdd preliminary brtv script for converting media and starting server - 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 4cd41bb24ae99df1a7b018632619ed6357763f15 /scm/bitreich-memestats/commit/4cd41bb24ae99df1a7b018632619ed6357763f15.gph bitreich.org 70
1parent 8b472486508e8fc511caba8c525d6519e1ee7383 /scm/bitreich-memestats/commit/8b472486508e8fc511caba8c525d6519e1ee7383.gph bitreich.org 70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk> URL:mailto:anders@adamsgaard.dk bitreich.org 70
iDate: Sun, 19 Apr 2020 20:09:52 +0000 Err bitreich.org 70
i Err bitreich.org 70
iAdd preliminary brtv script for converting media and starting server Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i A brtv-start.sh | 116 ++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 116 insertions(+), 0 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@@ -0,0 +1,116 @@ Err bitreich.org 70
i+#!/bin/sh 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+ Err bitreich.org 70
i+# memecache source dir Err bitreich.org 70
i+memecache=../memecache 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+ 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+ 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 image memes for this duration [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+ Err bitreich.org 70
i+ Err bitreich.org 70
i+ Err bitreich.org 70
i+fit_img_16_9() { Err bitreich.org 70
i+ convert -resize "$video_resolution"\> -size "$video_resolution" "$1" \ Err bitreich.org 70
i+ xc:"$bgcolor" +swap -gravity center -composite "$2" Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+video_from_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 "$1" \ Err bitreich.org 70
i+ -t "00:${3}:00" \ 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+ convert -size 640x480 xc:"$bgcolor" -pointsize 48 -fill "$fgcolor" \ Err bitreich.org 70
i+ -gravity center -draw "text 0,0 '#${1%.*}'" "/tmp/${1%.*}.png" 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 "/tmp/${1%.*}.png" \ Err bitreich.org 70
i+ -t "00:${title_display_time}:00" \ Err bitreich.org 70
i+ $ffmpec_codec\ Err bitreich.org 70
i+ "$2" 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+} 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+ 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+ fi Err bitreich.org 70
i+done 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+ 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+ 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+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+ function add_title(s) { Err bitreich.org 70
i+ sub(/\.\//, titledir"/", 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+ 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+ 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+ Err bitreich.org 70
i+ Err bitreich.org 70
i+pkill $bin Err bitreich.org 70
.
Response:
text/plain