SMOLNET PORTAL home about changes
iPut image->video processing into separate script - bitreich-tv - Meme TV encoding and streaming	Err	bitreich.org	70
hgit clone git://bitreich.org/bitreich-tv git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-tv	URL:git://bitreich.org/bitreich-tv git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-tv	bitreich.org	70
1Log	/scm/bitreich-tv/log.gph	bitreich.org	70
1Files	/scm/bitreich-tv/files.gph	bitreich.org	70
1Refs	/scm/bitreich-tv/refs.gph	bitreich.org	70
1Tags	/scm/bitreich-tv/tag	bitreich.org	70
1LICENSE	/scm/bitreich-tv/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 469296142ed571c3e38749a234a9eb31205645ac	/scm/bitreich-tv/commit/469296142ed571c3e38749a234a9eb31205645ac.gph	bitreich.org	70
1parent 9712aec3da3a8dd8e17f8626c138ae12c26e9c8c	/scm/bitreich-tv/commit/9712aec3da3a8dd8e17f8626c138ae12c26e9c8c.gph	bitreich.org	70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk>	URL:mailto:anders@adamsgaard.dk	bitreich.org	70
iDate:   Sun, 16 Aug 2020 21:33:26 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iPut image->video processing into separate script	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  A brtv-imgs-to-video.sh               |      78 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 78 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/brtv-imgs-to-video.sh b/brtv-imgs-to-video.sh	/scm/bitreich-tv/file/brtv-imgs-to-video.sh.gph	bitreich.org	70
i@@ -0,0 +1,78 @@	Err	bitreich.org	70
i+#!/bin/sh	Err	bitreich.org	70
i+# read hashtags.txt as stdin, download all images, and convert them to videos	Err	bitreich.org	70
i+# requirements: hurl(1), ffmpeg(1), convert(1)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### CONFIGURATION START	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# dir to contain images as videos	Err	bitreich.org	70
i+out_dir="img2vid"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# ffmpeg flags for generated videos	Err	bitreich.org	70
i+video_ext="webm"	Err	bitreich.org	70
i+ffmpeg_codec="-loglevel error -acodec libopus -b:a 96K -vcodec libvpx -b:v 64k -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+	Err	bitreich.org	70
i+# slide style	Err	bitreich.org	70
i+bgcolor=magenta	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+### CONFIGURATION END	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+die() {	Err	bitreich.org	70
i+        printf '%s: error: %s\n' "${0##*/}" "$1" >&2	Err	bitreich.org	70
i+        exit 1	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+regeximatch() {	Err	bitreich.org	70
i+        printf '%s' "$1" | grep -iEq "$2"	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 "${image_display_time}" \	Err	bitreich.org	70
i+                $ffmpeg_codec \	Err	bitreich.org	70
i+                "$2" < /dev/null	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+mkdir -p "$out_dir"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+# generate video from each image	Err	bitreich.org	70
i+# TODO: deal with .gif	Err	bitreich.org	70
i+while read -r tag url; do	Err	bitreich.org	70
i+        if ! regeximatch "$url" '\.(jpg|jpeg|png)$'; then	Err	bitreich.org	70
i+                continue	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        imgfile="${out_dir}/${url##*/}"	Err	bitreich.org	70
i+        out="${imgfile%.*}.${video_ext}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if [ ! -f "$out" ]; then	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if [ ! -f "$imgfile" ]; then	Err	bitreich.org	70
i+                        if ! hurl "$url" > "$imgfile"; then	Err	bitreich.org	70
i+                                die "hurl could not download $url"	Err	bitreich.org	70
i+                        fi	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if ! regeximatch "$(file -ib "$imgfile")" "^image\/"; then	Err	bitreich.org	70
i+                        die "input image $imgfile is invalid ($(file -b "$imgfile"))"	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+                fit_img_16_9 "$imgfile" "${out%.*}_16-9.jpg"	Err	bitreich.org	70
i+                video_from_img "${out%.${video_ext}}_16-9.jpg" "${out}"	Err	bitreich.org	70
i+                printf '%s\n' "$out"	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i+done	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/bitreich-tv/commit/469296142e...
Content-Typetext/plain; charset=utf-8