Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdd preliminary brtv script for converting media and starting server - bitreic…
git clone git://src.adamsgaard.dk/bitreich-memestats
Log
Files
Refs
---
commit 4cd41bb24ae99df1a7b018632619ed6357763f15
parent 8b472486508e8fc511caba8c525d6519e1ee7383
Author: Anders Damsgaard <[email protected]>
Date: Sun, 19 Apr 2020 20:09:52 +0000
Add preliminary brtv script for converting media and starting server
Diffstat:
A brtv-start.sh | 116 ++++++++++++++++++++++++++++++
1 file changed, 116 insertions(+), 0 deletions(-)
---
diff --git a/brtv-start.sh b/brtv-start.sh
t@@ -0,0 +1,116 @@
+#!/bin/sh
+
+# mkv streaming server executable
+# git://github.com/klaxa/mkvserver_mk2
+bin=mkvserver_mk2
+
+# memecache source dir
+memecache=../memecache
+
+# converted memecache dir
+memecache_conv=memecache
+
+# title animations dir
+title="title"
+
+# desired ffmpeg codec flags
+ffmpeg_codec="-c:v libx264 -c:a libvorbis -f matroska"
+
+# port for streaming socket (combined stream hosted on port 8080)
+commport=12345
+
+# 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
+
+
+
+fit_img_16_9() {
+ convert -resize "$video_resolution"\> -size "$video_resolution" "$1" \
+ xc:"$bgcolor" +swap -gravity center -composite "$2"
+}
+
+video_from_img() {
+ ffmpeg -y \
+ -f lavfi \
+ -i anullsrc=r=48000 \
+ -i "$1" \
+ -t "00:${3}:00" \
+ $ffmpeg_codec \
+ "$2"
+}
+
+title_slide() {
+ convert -size 640x480 xc:"$bgcolor" -pointsize 48 -fill "$fgcolor" \
+ -gravity center -draw "text 0,0 '#${1%.*}'" "/tmp/${1%.*}.png"
+ ffmpeg -y \
+ -f lavfi \
+ -i anullsrc=r=48000 \
+ -i "/tmp/${1%.*}.png" \
+ -t "00:${title_display_time}:00" \
+ $ffmpec_codec\
+ "$2"
+}
+
+video_conv() {
+ 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"/*.png "$memecache"/*.JPG; do
+ out="${memecache_conv}/$(basename "${f%.*}.mkv")"
+ if [ ! -e "$out" ]; then
+ fit_img_16_9 "$f" "${out%.*}.jpg"
+ video_from_img "${out%.mkv}.jpg" "${out}" "${image_display_tim…
+ fi
+done
+
+# make title slides for video and converted images and encode to common codec
+for f in "$memecache"/*.mkv \
+ "$memecache"/*.mp4 \
+ "$memecache"/*.webm \
+ "$memecache_conv"/*.mkv; do
+
+ title_path="${title}/$(basename "${f%.*}.mkv")"
+ [ ! -e "${title_path}" ] && title_slide "$f" "$title_path"
+
+ out="${memecache_conv}/$(basename "${f%.*}.mkv")"
+ [ ! -e "${out}" ] && video_conv "$f" "$out"
+done
+
+# generate random playlist from converted memes and add title slides
+find "$memecache_conv" -maxdepth 1 -name "*.mkv" -type f | sort -R | \
+ sed "s/^/file '/;s/$/'/" | \
+ awk -v titledir="$title" '
+ function add_title(s) {
+ sub(/\.\//, titledir"/", s);
+ return s
+ }
+ {line=$0;
+ print add_title($line);
+ print $0}' > playlist
+
+netcat -l -p "$commport" | $bin >/dev/null 2>&1 &
+sleep 2
+
+ffmpeg -f concat -safe 0 -i playlist \
+ -f matroska \
+ $ffmpeg_codec \
+ -max_muxing_queue_size 9999 \
+ tcp://localhost:$commport
+
+
+pkill $bin
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.