hlstranscode.sh
· 1.8 KiB · Bash
Raw
#!/bin/bash
# hlstranscode $URL
cat >/tmp/cloud.conf <<EOFF
#!/bin/bash
apt-get update -qq
apt-get install ffmpeg -y -qq
curl https://rclone.org/install.sh | bash 2>/dev/null >/dev/null
export ID=\$(curl http://169.254.169.254/metadata/v1/id 2>/dev/null)
export URL="$1"
mkdir -p /root/.config/rclone /root/inp
cat > /root/.config/rclone/rclone.conf <<EOF
$(cat ~/.config/rclone/rclone.conf)
EOF
cd /root/inp
curl "\$URL" -L -O
export SUM=\$(sha1sum * | awk '{print \$1}')
cd /root
git clone https://github.com/vincentbernat/video2hls /root/video2hls 2>/dev/null
/root/video2hls/video2hls --audio-only --audio-bitrate 128 --output /root/out/\$SUM /root/inp/*
ffmpeg -i /root/inp/* /root/out/\$SUM/index.vtt 2>/dev/null
echo "\$URL" >> /root/out/\$SUM/.source
rclone copy /root/out/ b2:ads-share/hls/ --transfers=40
echo \$SUM
echo "ALLDONE (ctrl-c)"
curl -X POST --data '{"from": "hlstranscode", "message": "transcoded $(basename "$1") '\$SUM'"}' https://logger.alyssasmith.id.au
curl -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
EOFF
cat /tmp/cloud.conf
read 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)
#(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)
rm /tmp/cloud.conf
until (ssh -o StrictHostKeyChecking=no root@$IP tail -f /var/log/cloud-init-output.log); do
sleep 1
done
| 1 | #!/bin/bash |
| 2 | # hlstranscode $URL |
| 3 | |
| 4 | cat >/tmp/cloud.conf <<EOFF |
| 5 | #!/bin/bash |
| 6 | apt-get update -qq |
| 7 | apt-get install ffmpeg -y -qq |
| 8 | curl https://rclone.org/install.sh | bash 2>/dev/null >/dev/null |
| 9 | |
| 10 | export ID=\$(curl http://169.254.169.254/metadata/v1/id 2>/dev/null) |
| 11 | export URL="$1" |
| 12 | |
| 13 | mkdir -p /root/.config/rclone /root/inp |
| 14 | cat > /root/.config/rclone/rclone.conf <<EOF |
| 15 | $(cat ~/.config/rclone/rclone.conf) |
| 16 | EOF |
| 17 | |
| 18 | cd /root/inp |
| 19 | curl "\$URL" -L -O |
| 20 | export SUM=\$(sha1sum * | awk '{print \$1}') |
| 21 | cd /root |
| 22 | |
| 23 | git 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/* |
| 25 | ffmpeg -i /root/inp/* /root/out/\$SUM/index.vtt 2>/dev/null |
| 26 | echo "\$URL" >> /root/out/\$SUM/.source |
| 27 | rclone copy /root/out/ b2:ads-share/hls/ --transfers=40 |
| 28 | |
| 29 | echo \$SUM |
| 30 | echo "ALLDONE (ctrl-c)" |
| 31 | curl -X POST --data '{"from": "hlstranscode", "message": "transcoded $(basename "$1") '\$SUM'"}' https://logger.alyssasmith.id.au |
| 32 | curl -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 |
| 33 | EOFF |
| 34 | cat /tmp/cloud.conf |
| 35 | read 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) |
| 37 | rm /tmp/cloud.conf |
| 38 | until (ssh -o StrictHostKeyChecking=no root@$IP tail -f /var/log/cloud-init-output.log); do |
| 39 | sleep 1 |
| 40 | done |