Tag 2 komplettierung

This commit is contained in:
2025-11-17 16:51:53 +01:00
parent eb6eb665e5
commit b14f77de92
109 changed files with 223 additions and 46 deletions

View File

@@ -0,0 +1,145 @@
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
IMG_INPUT="$SCRIPT_DIR/../assets/images/originals"
VID_INPUT="$SCRIPT_DIR/../assets/videos/originals"
BASE_OUTPUT="$SCRIPT_DIR/../assets"
IMAGE_SIZES=(480 720 1024 1366 1600 1920 2560 3840)
IMAGE_FORMATS=("avif" "webp" "jpeg")
echo "$SCRIPT_DIR"
echo "$BASE_OUTPUT"
# Videonamen (Ordner)
VIDEO_NAMES=(
"nHD"
"FWVGA"
"qHD"
"HD"
"HDplus"
"FullHD"
"1440p"
"4K"
)
# Videogrößen (ffmpeg scale)
VIDEO_SCALES=(
"640:360"
"854:480"
"960:540"
"1280:720"
"1600:900"
"1920:1080"
"2560:1440"
"3840:2160"
)
VIDEO_FORMATS=("mp4" "webm")
###############################################
# BILDER
###############################################
process_images() {
echo "🖼️ Starte Bildverarbeitung..."
for img in "$IMG_INPUT"/*.png; do
[ -e "$img" ] || continue
filename=$(basename "$img")
name="${filename%.*}"
width=$(magick identify -format "%w" "$img")
height=$(magick identify -format "%h" "$img")
orientation="landscape"
[ "$height" -gt "$width" ] && orientation="portrait"
echo "Bild: $filename ($orientation)"
for size in "${IMAGE_SIZES[@]}"; do
for fmt in "${IMAGE_FORMATS[@]}"; do
OUT_DIR="$BASE_OUTPUT/images/$size/$fmt"
mkdir -p "$OUT_DIR"
OUT_FILE="$OUT_DIR/$name.$fmt"
if [ -f "$OUT_FILE" ]; then
echo "⏩ Skip: $name.$fmt existiert bereits ($size)"
continue
fi
if [ "$orientation" = "landscape" ]; then
magick "$img" -resize "${size}" "$OUT_FILE"
else
magick "$img" -resize "x${size}" "$OUT_FILE"
fi
done
done
done
}
###############################################
# VIDEOS
###############################################
process_videos() {
echo "🎬 Starte Videobearbeitung..."
for vid in "$VID_INPUT"/*.mp4; do
[ -e "$vid" ] || continue
filename=$(basename "$vid")
name="${filename%.*}"
echo "Video: $filename"
# über Index 07 iterieren
for i in "${!VIDEO_NAMES[@]}"; do
res="${VIDEO_NAMES[$i]}"
scale="${VIDEO_SCALES[$i]}"
for vfmt in "${VIDEO_FORMATS[@]}"; do
OUT_DIR="$BASE_OUTPUT/videos/$res/$vfmt"
mkdir -p "$OUT_DIR"
OUT_FILE="$OUT_DIR/$name.$vfmt"
if [ -f "$OUT_FILE" ]; then
echo "⏩ Skip: $name.$vfmt existiert bereits ($res)"
continue
fi
if [ "$vfmt" = "mp4" ]; then
ffmpeg -y -i "$vid" -vf "scale=$scale" \
-c:v libx264 -crf 23 -preset medium \
-c:a copy \
"$OUT_FILE"
else
ffmpeg -y -i "$vid" -vf "scale=$scale" \
-c:v libvpx-vp9 -b:v 0 -crf 32 \
-c:a libopus \
"$OUT_FILE"
fi
done
done
done
}
###############################################
echo "----------------------------------------------"
echo " Bratonischer Medien-Konverter gestartet"
echo " Skriptort: $SCRIPT_DIR"
echo "----------------------------------------------"
process_images
process_videos
echo "----------------------------------------------"
echo " Fertig! Nur fehlende Dateien wurden erzeugt."
echo "----------------------------------------------"