#!/bin/bash

INPUT_DIR="/var/www/files/videos/convert"
OUTPUT_DIR="$INPUT_DIR/optimized"

mkdir -p "$OUTPUT_DIR"

PROFILES=(
  "360p:640:800k"
)

# Находим все mp4/mov/mkv, исключая папку optimized
find "$INPUT_DIR" -type f \( -iname "*.mp4" -o -iname "*.mov" -o -iname "*.mkv" \) \
  -not -path "$OUTPUT_DIR/*" -print0 | while IFS= read -r -d '' f; do
    # Абсолютный путь (find уже даёт абсолютный или относительный от INPUT_DIR)
    abs_path="$f"

    # Относительный путь от INPUT_DIR
    rel_path="${abs_path#$INPUT_DIR/}"

    # Имя без расширения
    filename="${rel_path%.*}"

    # Папка для выходных файлов
    output_dir="$OUTPUT_DIR/$(dirname "$rel_path")/$filename"
    mkdir -p "$output_dir"

    echo "⚡ Обработка: $rel_path"

    MASTER_PLAYLIST="$output_dir/master.m3u8"
    echo "#EXTM3U" > "$MASTER_PLAYLIST"

    for profile in "${PROFILES[@]}"; do
        IFS=":" read -r name width bitrate <<< "$profile"

        variant_dir="$output_dir/$name"
        mkdir -p "$variant_dir"

        playlist="$variant_dir/index.m3u8"

        echo "   ➜ $name ($bitrate, $width)"

        ffmpeg -y -i "$abs_path" \
          -vf "scale=w=$width:h=-2" \
          -c:v h264 -b:v $bitrate -preset veryfast -profile:v main -crf 20 \
          -c:a aac -ar 48000 -b:a 128k \
          -hls_time 6 -hls_playlist_type vod \
          -hls_segment_filename "$variant_dir/segment_%03d.ts" \
          "$playlist" 2> "$output_dir/ffmpeg_error.log"

        echo "#EXT-X-STREAM-INF:BANDWIDTH=${bitrate//k/000},RESOLUTION=${width}x$(($width*9/16))" >> "$MASTER_PLAYLIST"
        echo "$name/index.m3u8" >> "$MASTER_PLAYLIST"
    done

    echo "✅ Готово: $MASTER_PLAYLIST"
done

echo "🎉 Все видео обработаны. HLS лежит в $OUTPUT_DIR"

