From: Mario Date: Fri, 14 Jul 2017 23:51:47 +0000 (+0000) Subject: Merge branch 'detrate/feature/encode-demos' into 'master' X-Git-Tag: xonotic-v0.8.5~202 X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=commitdiff_plain;h=243220bae3789792389d8985d4a52f101809f4f4;hp=-c Merge branch 'detrate/feature/encode-demos' into 'master' Added command to convert video to gif to encode-demos.sh See merge request !26 --- 243220bae3789792389d8985d4a52f101809f4f4 diff --combined misc/tools/encode-demos.sh index ab84bd3c,0a30a9eb..ef920a97 --- a/misc/tools/encode-demos.sh +++ b/misc/tools/encode-demos.sh @@@ -1,9 -1,9 +1,9 @@@ #!/bin/bash # name: encode-demos.sh - # version: 0.6.2 + # version: 0.6.3 # author: Tyler "-z-" Mulligan # license: GPL & MIT - # date: 26-02-2017 + # date: 01-04-2017 # description: headless encoding of demo files to HD video concurrently with Xfvb and parallel # # The encoding is done with a full Xonotic client inside Xfvb. @@@ -42,7 -42,7 +42,7 @@@ # Customize USERDIR=${HOME}/.xonotic-clean # path to Xonotic userdir for client that does encoding - GAMEDIR=${USERDIR}/data # path to Xonotic userdir for client that does encoding + GAMEDIR=${USERDIR}/data # path to Xonotic gamedir for client that does encoding XONOTIC_BIN="./all" # binary used to launch Xonotic JOB_TIMEOUT="4h" # if demo doesn't quit itself or hangs JOBS=4 # number of concurrent jobs @@@ -83,7 -83,7 +83,7 @@@ _check_xonotic_dir() _get_xonotic_dir() { relative_dir=$(dirname $0)/../.. _check_xonotic_dir ${relative_dir} - export XONOTIC_DIR=$(cd ${relative_dir}; pwd) + export XONOTIC_DIR="$(cd ${relative_dir}; pwd)" } _kill_xonotic() { @@@ -358,6 -358,24 +358,24 @@@ compress() fi } + create_gif() { + local video=$1 + local fps=${2:-15} + local width=${3:-320} + local start=${4:-0} + local length=${5:-999999} + local loop=${6:-1} + local output=$(basename ${video%.*}.gif) + + # Generate palette for better quality + ${FFMPEG} -i ${GAMEDIR}/${video} -vf fps=${fps},scale=${width}:-1:flags=lanczos,palettegen ${GAMEDIR}/tmp_palette.png + + # Generate gif using palette + ${FFMPEG} -i ${GAMEDIR}/${video} -i ${GAMEDIR}/tmp_palette.png -ss ${start} -t ${length} -loop ${loop} -filter_complex "fps=${fps},scale=${width}:-1:flags=lanczos[x];[x][1:v]paletteuse" ${GAMEDIR}/${output} + + rm ${GAMEDIR}/tmp_palette.png + } + list_jobs() { completed_jobs=$(_get_completed_jobs) active_jobs=$(_get_active_demo_jobs) @@@ -510,19 -528,23 +528,23 @@@ COMMAND Encoding -------- - batch [demos.txt] [timeout] [--compress] batch process a list of demos from file relative to \$USERDIR/data - single [timeout] [--compress] process a single demo file in \$USERDIR/data. ex: demos/cool.dem - 'timeout' does not include '--compress', compress starts a new job + batch [demos.txt] [timeout] [--compress] batch process a list of demos from file relative to \$USERDIR/data + single [timeout] [--compress] process a single demo file in \$USERDIR/data. ex: demos/cool.dem + 'timeout' does not include '--compress', compress starts a new job Compression ----------- - compress