Email on start encode Encode audio 48000 bps Clearly show error or success in Results page Optional savedir
35 lines
1.3 KiB
Bash
Executable File
35 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# stream - Stream video when called from crontab
|
|
# Usage: stream <tag>
|
|
# The tag refers to video files in ./uploadpage/streams without the
|
|
# '.mp4', that should have been re-encoded by `encode`. The tag has no path
|
|
# information, has the "streamkey" at the start before the first dot (there
|
|
# has to be a dot!) and the "target" at the very end, after the last '@'.
|
|
# Required: ffmpeg coreutils(tail rm)
|
|
|
|
|
|
_=$(readlink -f -- "${BASH_SOURCE:-$0}") repopath=${_%/*}
|
|
log=$repopath/process.log
|
|
in=$repopath/uploadpage/streams/$1.mp4 key=${1%%.*} target=${1##*@}
|
|
case $target in
|
|
Facebook) rtmp=rtmps://live-api-s.facebook.com:443/rtmp/$key ;;
|
|
YouTube) rtmp=rtmp://a.rtmp.youtube.com/live2/$key ;;
|
|
RestreamSG) rtmp=rtmp://singapore.restream.io/live/$key ;;
|
|
*) rtmp=rtmp://live.restream.io/live/$key
|
|
esac
|
|
source "$repopath/vars" # I:savedir
|
|
|
|
# Stream, log it, and remove all files if successful
|
|
set -o pipefail # to get ffmpeg's returncode
|
|
if ffmpeg -re -y -i "$in" -c:v copy -c:a copy -f flv "$rtmp" 2>&1 |tail -n 20 >"$in.log"
|
|
then
|
|
rm "$in.log" "${in%.mp4}"
|
|
[[ $savedir && -f $savedir ]] && mv "$in" "$savedir" || rm "$in"
|
|
else
|
|
echo "Error while streaming $1" >>"$log"
|
|
fi
|
|
|
|
# In any case, comment-out the crontab entry so it's not waiting for next year
|
|
crontab -l| sed "/$1/ s/^/#/" |crontab -
|