Last active 1627586600

A script to launch a DO droplet with a script to download a file via http, transcode it using video2hls, upload the results to b2:ads-share/hls, then delete itself

hlstranscode.sh Raw
1#!/bin/bash
2# hlstranscode $URL
3
4cat >/tmp/cloud.conf <<EOFF
5#!/bin/bash
6apt-get update -qq
7apt-get install ffmpeg -y -qq
8curl https://rclone.org/install.sh | bash 2>/dev/null >/dev/null
9
10export ID=\$(curl http://169.254.169.254/metadata/v1/id 2>/dev/null)
11export URL="$1"
12
13mkdir -p /root/.config/rclone /root/inp
14cat > /root/.config/rclone/rclone.conf <<EOF
15$(cat ~/.config/rclone/rclone.conf)
16EOF
17
18cd /root/inp
19curl "\$URL" -L -O
20export SUM=\$(sha1sum * | awk '{print \$1}')
21cd /root
22
23git clone https://github.com/vincentbernat/video2hls /root/video2hls 2>/dev/null
24/root/video2hls/video2hls --audio-only --audio-bitrate 128 --output /root/out/\$SUM /root/inp/*
25ffmpeg -i /root/inp/* /root/out/\$SUM/index.vtt 2>/dev/null
26echo "\$URL" >> /root/out/\$SUM/.source
27rclone copy /root/out/ b2:ads-share/hls/ --transfers=40
28
29echo \$SUM
30echo "ALLDONE (ctrl-c)"
31curl -X POST --data '{"from": "hlstranscode", "message": "transcoded $(basename "$1") '\$SUM'"}' https://logger.alyssasmith.id.au
32curl -X DELETE -H "Authorization: Bearer $(grep access-token "/Users/alyssa/Library/Application Support/doctl/config.yaml" | awk '{print $2}')" https://api.digitalocean.com/v2/droplets/\$ID
33EOFF
34cat /tmp/cloud.conf
35read IP <<< $(set -x; doctl compute droplet create hlstranscode-$(date +%Y%m%d-%H%M%S) --region sgp1 --size s-24vcpu-128gb --image ubuntu-20-04-x64 --ssh-keys 28633873,28633866,29533274,29451733,29347920,30747235 --user-data-file /tmp/cloud.conf --wait --no-header --format PublicIPv4)
36#(set -x; doctl compute droplet create hlstranscode-$(date +%Y%m%d-%H%M%S) --region sgp1 --size s-24vcpu-128gb --image ubuntu-20-04-x64 --ssh-keys 28633873,28633866,29533274,29451733,29347920,30747235 --user-data-file /tmp/cloud.conf)
37rm /tmp/cloud.conf
38until (ssh -o StrictHostKeyChecking=no root@$IP tail -f /var/log/cloud-init-output.log); do
39 sleep 1
40done