#!/usr/bin/env bash # Montaz lokalny, bez API. N przejsc zajmuje 10 s, potem 2 s najazdu, 6 s makro i 2 s planszy. # INPUT/transition-1.mp4 ... transition-N.mp4 (kazdy >= 5 s), push.mp4 (>= 2 s), macro.mp4 (>= 6 s), outro.png. set -euo pipefail input=${1:?Podaj katalog wejscia} output=${2:?Podaj plik wyjsciowy mp4} n=${3:-3} [[ "$n" =~ ^[1-9][0-9]*$ ]] && (( n <= 10 )) || { echo 'N musi wynosic 1-10' >&2; exit 1; } input=$(cd "$input" && pwd) output_dir=$(dirname "$output") mkdir -p "$output_dir" output="$(cd "$output_dir" && pwd)/$(basename "$output")" [[ ! -e "$output" ]] || { echo 'Plik wyjsciowy juz istnieje' >&2; exit 1; } workdir=$(mktemp -d) # Bez kasowania rekursywnego; tymczasowe pliki sa male i zostaja do kontroli. printf 'Pliki robocze: %s\n' "$workdir" font=${FONT_FILE:-C:/Windows/Fonts/arial.ttf} cp "$font" "$workdir/font.ttf" for name in years title tagline; do if [[ -f "$input/$name.txt" ]]; then cp "$input/$name.txt" "$workdir/$name.txt"; else printf '%s' "$name" > "$workdir/$name.txt"; fi done args=() for ((i=1;i<=n;i++)); do args+=(-i "$input/transition-$i.mp4"); done args+=(-i "$input/push.mp4" -i "$input/macro.mp4" -loop 1 -i "$input/outro.png") cd "$workdir" filter='' for ((i=0;i