aboutsummaryrefslogtreecommitdiffstats
path: root/encode-jack.sh
diff options
context:
space:
mode:
authorYoann QUERET <yoann@queret.net>2016-02-09 16:29:25 +0100
committerYoann QUERET <yoann@queret.net>2016-02-09 16:29:25 +0100
commita153cb1e281357300ae43454cba593b9cf0c3bde (patch)
tree4430d0a1019e0f6cbe0e7935f3faaf613ffe343b /encode-jack.sh
parentbcd51f68047854efc73f53463e0091bae14b7ad9 (diff)
downloaddab-scripts-a153cb1e281357300ae43454cba593b9cf0c3bde.tar.gz
dab-scripts-a153cb1e281357300ae43454cba593b9cf0c3bde.tar.bz2
dab-scripts-a153cb1e281357300ae43454cba593b9cf0c3bde.zip
Bye bye old script, welcome supervisor
Diffstat (limited to 'encode-jack.sh')
-rwxr-xr-xencode-jack.sh238
1 files changed, 0 insertions, 238 deletions
diff --git a/encode-jack.sh b/encode-jack.sh
deleted file mode 100755
index bb28dee..0000000
--- a/encode-jack.sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/bin/bash
-#
-# Encode programme using mplayer, connect through JACK
-# to dabplus-enc or toolame
-#
-# Read webstream from URL using mplayer
-# Launch dabplus-enc or toolame encoder
-# connect both through JACK
-# monitor processes, and restart if necessary
-# Optionally send an email when restart happens
-
-printerr() {
- echo -e "\033[01;31m$1\033[0m"
- logger -p local0.error -t "$ID" "$1"
-}
-
-printmsg() {
- echo -e "\033[01;32m$1\033[0m"
- logger -p local0.notice -t "$ID" "$1"
-}
-
-set -u
-
-# check number of arguments
-if [[ "$#" -lt 3 ]] ; then
- echo "Usage $0 url jack-id destination [volume] [encoder]"
- echo "The volume setting is optional"
- exit 1
-fi
-
-if [[ "$#" -gt 2 ]] ; then
- URL=$1
- ID=$2
- DST=$3
-fi
-
-if [[ "$#" == 4 ]] ; then
- VOL=$4
- ENC="dabplus-enc"
-elif [[ "$#" == 5 ]] ; then
- VOL=$4
- ENC=$5
-else
- VOL="0"
- ENC="dabplus-enc"
-fi
-
-
-BITRATE=80
-RATE=32 #kHz
-
-if [[ "$ENC" == "toolame" && "$RATE" == "32" ]] ; then
- echo "32kHz not supported for toolame"
- exit 1
-fi
-
-mplayerpid=0
-encoderpid=0
-running=1
-
-mplayer_ok=0
-encoder_ok=0
-
-# The trap for Ctrl-C
-sigint_trap() {
- printerr "Got Ctrl-C, killing mplayer and encoder"
- running=0
-
- if [[ "$mplayerpid" != "0" ]] ; then
- kill -TERM $mplayerpid
- sleep 2
- kill -KILL $mplayerpid
- fi
-
- if [[ "$encoderpid" != "0" ]] ; then
- kill -TERM $encoderpid
- sleep 2
- kill -KILL $encoderpid
- fi
-
- printmsg "quitting"
- exit
-}
-
-trap sigint_trap SIGTERM
-trap sigint_trap SIGINT
-
-while [[ "$running" == "1" ]]
-do
- if [[ "$mplayerpid" == "0" ]] ; then
- if [[ "$VOL" == "0" ]] ; then
- mplayer -quiet -af resample=${RATE}000:0:2 -ao jack:name=$ID "$URL" &
- mplayerpid=$!
- else
- mplayer -quiet -af resample=${RATE}000:0:2 -af volume=$VOL -ao jack:name=$ID "$URL" &
- mplayerpid=$!
- fi
-
- printmsg "Started mplayer with pid $mplayerpid"
-
- # give some time to mplayer to set up and
- # wait until port becomes visible
- timeout=10
-
- while [[ "$mplayer_ok" == "0" ]]
- do
- printmsg "Waiting for mplayer to connect to jack ($timeout)"
- sleep 1
- mplayer_ok=$(jack_lsp $ID:out_0 | wc -l)
-
- timeout=$(( $timeout - 1 ))
-
- if [[ "$timeout" == "0" ]] ; then
- printerr "mplayer doesn't connect to jack !"
- kill $mplayerpid
- break
- fi
- done
- else
- printmsg "No need to start mplayer: $mplayerpid"
- fi
-
- if [[ "$mplayer_ok" == "1" && "$encoder_ok" == "0" ]] ; then
- if [[ "$ENC" == "dabplus-enc" ]] ; then
- dabplus-enc -j ${ID}enc -l \
- -b $BITRATE -r ${RATE}000 -f raw -o $DST &
- encoderpid=$!
- elif [[ "$ENC" == "toolame" ]] ; then
- toolame -b $BITRATE -s $RATE \
- -j ${ID}enc $DST &
- encoderpid=$!
- fi
-
- # give some time to the encoder to set up and
- # wait until port becomes visible
- timeout=10
-
- encoder_connected=0
-
- while [[ "$encoder_connected" == "0" ]]
- do
- printmsg "Waiting for encoder to connect to jack ($timeout)"
- sleep 1
- encoder_connected=$(jack_lsp ${ID}enc:input0 | wc -l)
-
- timeout=$(( $timeout - 1))
-
- if [[ "$timeout" == "0" ]] ; then
- printerr "encoder doesn't connect to jack !"
- kill $encoderpid
- break
- fi
- done
-
- if [[ "$encoder_connected" == "1" ]] ; then
- jack_connect ${ID}:out_0 ${ID}enc:input0 && \
- jack_connect ${ID}:out_1 ${ID}enc:input1
- connect_ret=$?
-
- if [[ "$connect_ret" == "0" ]] ; then
- encoder_ok=1
- else
- encoder_ok=0
- fi
-
- if [[ "$encoder_ok" == "1" ]] ; then
- printmsg "Started encoder with pid $encoderpid"
- else
- if [[ "$encoderpid" != "0" ]] ; then
- kill -TERM $encoderpid
- fi
- fi
- fi
- fi
-
- sleep 5
-
- checkloop=1
- while [[ "$checkloop" == "1" ]]
- do
- sleep 2
-
- kill -s 0 $mplayerpid
- if [[ "$?" != "0" ]] ; then
- # mplayer died
- # we must kill jack-stdout, because we cannot reconnect it
- # to a new mplayer, since we do not know the jack-stdout name.
- # And it has no cmdline option to set one, Rrrrongntudtjuuu!
- if [[ "$encoderpid" != "0" ]] ; then
- kill -TERM $encoderpid
- fi
-
- # mark as dead
- mplayerpid=0
- mplayer_ok=0
- encoderpid=0
- encoder_ok=0
-
- checkloop=0
-
- printerr "Mplayer died"
- fi
-
- if [[ "$encoderpid" != "0" ]] ; then
- kill -s 0 $encoderpid
- if [[ "$?" != "0" ]] ; then
- # the encoder died,
- # no need to kill the mplayer, we can reconnect to it
-
- encoderpid=0
- encoder_ok=0
-
- checkloop=0
-
- printerr "Encoder died"
- fi
- fi
- done
-
- MAILTO=$(cat site/mail-warning.txt)
-
- if [[ "$MAILTO" != "" ]] ; then
- NOW=$(date)
-
- mail -s "Encoder $ID restart $URL" "$MAILTO" << EOF
-The encoder id:$ID
-encoding $URL -> $DST using encode-jack was restarted at
-$NOW
-
-mplayer ok? $mplayer_ok
-
-EOF
-
- fi
- sleep 5
-
-done
-