#!/bin/bash

# Ensure filename is passed as an argument
if [ -z "$1" ]; then
  echo "No file provided. Usage: ./script.sh <filename>"
  exit 1
fi

# Extract the filename without extension and the file extension
filename=$(basename "$1")
name="${filename%.*}"
ext="${filename##*.}"

# Display the filename and extension
echo "The filename: $name"
echo "The extension: $ext"

# Make new directories in the same folder
mkdir -p "media/$name/hls"

# Get the cover jpg and preview gif from video
ffmpeg -i "$1" -ss 20.00 -vframes 1 "./media/$name/hls/cover_h1.jpg"
ffmpeg -i "$1" -ss 20.00 -vframes 1 -s 760x428 "./media/$name/hls/cover_l1.jpg"
ffmpeg -ss 00:00:10 -t 3 -i "$1" -s 640x360 -r 2 "./media/$name/hls/preview.gif"

# Start to work on videos
ffmpeg -i "$1" -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -threads 5 -preset ultrafast -f hls "./media/$name/hls/360_out.m3u8"
ffmpeg -i "$1" -profile:v baseline -level 3.0 -s 800x480 -start_number 0 -hls_time 10 -hls_list_size 0 -threads 5 -preset ultrafast -f hls "./media/$name/hls/480_out.m3u8"
ffmpeg -i "$1" -profile:v baseline -level 3.0 -s 1280x720 -start_number 0 -hls_time 10 -hls_list_size 0 -threads 5 -preset ultrafast -f hls "./media/$name/hls/720_out.m3u8"
ffmpeg -i "$1" -profile:v baseline -level 3.0 -s 1920x1080 -start_number 0 -hls_time 10 -hls_list_size 0 -threads 5 -preset ultrafast -f hls "./media/$name/hls/1080_out.m3u8"

# Check if any error occurred
if [ $? -ne 0 ]; then
  echo "Errors encountered during execution. Exited with status: $?"
  exit 1
fi

# Generate overall m3u8 playlist
echo "Generating overall m3u8 playlist..."
{
  echo "#EXTM3U"
  echo "#EXT-X-STREAM-INF:BANDWIDTH=375000,RESOLUTION=640x360"
  echo "360_out.m3u8"
  echo "#EXT-X-STREAM-INF:BANDWIDTH=750000,RESOLUTION=854x480"
  echo "480_out.m3u8"
  echo "#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720"
  echo "720_out.m3u8"
  echo "#EXT-X-STREAM-INF:BANDWIDTH=3500000,RESOLUTION=1920x1080"
  echo "1080_out.m3u8"
} > "./media/$name/hls/${name}.m3u8"

echo "Overall m3u8 playlist generated."
echo "Work complete."

