streamupload/prep
2022-08-26 21:31:39 +07:00

32 lines
983 B
Bash
Executable File

#!/usr/bin/env bash
# prep - Encode for streaming and schedule cron job
# Usage: prep <upload>
# (called from upload.php in /var/www/uploadpage)
# <upload>: "re_[0-9a-f_]*.YYYY-MM-DD_hh:mm" in /var/www/uploadpage/uploads/
log=/var/www/upload.log
dir=/var/www/uploadpage/uploads
name=$1 file=$dir/$name key=${name%%.*} date=${name##*.}
type=$(file -bL --mime-type "$file")
[[ ! ${type:0:5} = video ]] &&
echo "$type" && exit 1
# Convert videofile
/usr/bin/ffmpeg -y -i "$file" \
-vcodec libx264 -force_key_frames 'expr:gte(t,n_forced*2)' -b:v 5m -acodec copy "$file.mp4" &&
sync &&
sleep 1 &&
/usr/bin/rm "$file" ||
exit 2
# Schedule cron job
m=${date:14:2} m=${m#0} h=${date:11:2} h=${h#0}
D=${date:8:2} D=${D#0} M=${date:5:2} M=${M#0}
/usr/bin/crontab -l ||
echo -e "# m h dom mon dow command\n" |/usr/bin/crontab -
line="$m $h $D $M "'*'" /var/www/stream $name"
echo -e "$(/usr/bin/crontab -l)\n$line" |/usr/bin/crontab -
echo "crontab: '$line'" >>"$log"
exit 0