diff options
-rwxr-xr-x | src/hls/create-runit-conf.sh | 45 | ||||
-rwxr-xr-x | src/hls/install.sh | 10 | ||||
-rw-r--r-- | src/hls/m3u8-segmenter-git-repo | 1 | ||||
-rwxr-xr-x | src/hls/start-hls.sh | 50 |
4 files changed, 106 insertions, 0 deletions
diff --git a/src/hls/create-runit-conf.sh b/src/hls/create-runit-conf.sh new file mode 100755 index 0000000..4d43282 --- /dev/null +++ b/src/hls/create-runit-conf.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "Usage $0 <name>" + exit 1 +fi + +name=$1 +OUT_D=runit + +rm -rf "$OUT_D" +mkdir -p "$OUT_D" + +for src in av-orig av-en; do + for profile in low medium high; do + echo "creating runit instance for $src - $profile" + DIR="$OUT_D/hls-$name-$src-$profile" + mkdir -p "$DIR/log" +cat >> "$DIR/run" <<EOF +#!/bin/sh +set -e + +exec 2>&1 +exec chpst -u flumotion:flumotion /usr/local/bin/start-hls.sh "$name" "$src" "$profile" +EOF + chmod +x "$DIR/run" + +cat >> "$DIR/log/run" <<EOF +#!/bin/sh +set -e + +LOG_D="/var/log/hls-$name/$src-$profile/" +if [ ! -d "\$LOG_D" ]; then + mkdir -p -m0750 "\$LOG_D" +fi +chown root:adm "\$LOG_D" +exec chpst -u root:adm svlogd -tt "\$LOG_D" +EOF + chmod +x "$DIR/log/run" + + ln -s "/var/run/sv.hls-$name-$src-$profile" "$DIR/supervise" + ln -s "/var/run/sv.hls-$name-$src-$profile.log" "$DIR/log/supervise" + + done +done diff --git a/src/hls/install.sh b/src/hls/install.sh new file mode 100755 index 0000000..0cb15d0 --- /dev/null +++ b/src/hls/install.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +sudo aptitude install git build-essential ffmpeg pkg-config libavformat-dev runit +git clone `cat m3u8-segmenter-git-repo` +cd m3u8-segmenter +./configure +make +sudo cp m3u8-segmenter /usr/local/bin +cd .. +sudo cp start-hls.sh /usr/local/bin diff --git a/src/hls/m3u8-segmenter-git-repo b/src/hls/m3u8-segmenter-git-repo new file mode 100644 index 0000000..df7218d --- /dev/null +++ b/src/hls/m3u8-segmenter-git-repo @@ -0,0 +1 @@ +git://github.com/johnf/m3u8-segmenter.git diff --git a/src/hls/start-hls.sh b/src/hls/start-hls.sh new file mode 100755 index 0000000..418416e --- /dev/null +++ b/src/hls/start-hls.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# +# Installation: +# +# $ git clone git://github.com/johnf/m3u8-segmenter.git +# $ cd m3u8-segmenter +# $ ./confiugure +# $ make +# $ sudo cp m3u8-segmenter /usr/local/bin +# $ copy start-hls.sh /usr/local/bin +# +# add following to /etc/fstab +# tmpfs /var/www/elevate-live tmpfs size=1G,mode=755,uid=flumotion,gid=flumotion 0 0 +# + +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then + echo "Usage: $0 <name> <src> (high|medium|low)" + exit 1 +fi + +name=$1 +quality=$3 +stream_name="$name/$2-hls-$quality" +src="http://localhost:8000/$2-flash-$quality.flv" +segmenter="/usr/local/bin/m3u8-segmenter" +len=3 +num=3 +url="http://r38.realraum.at/" + +case "$3" in + high) + arate=160k + ;; + medium) + arate=128k + ;; + low) + arate=96k + ;; + *) + arate=128k + ;; +esac + +cd /var/www +ffmpeg -y -i "$src" -f mpegts -acodec libmp3lame -ar 44100 -ab "$arate" -vcodec copy -vbsf h264_mp4toannexb -async 2 - | $segmenter -i - -d $len -n $num -p "$stream_name" -m "$stream_name.m3u8" -u "$url" +rm -f "$stream_name"-*.ts +rm -f "$stream_name".m3u8 + +exit 0 |