Files
m3u-restream-hdmi/ffmpeg
T
2026-03-17 09:13:04 +01:00

51 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
LOGFILE="/home/sandro/m3u/livetv_log.txt"
ARGS=("$@")
IS_LIVE=false
MODIFIED="NEIN"
for arg in "${ARGS[@]}"; do
if [[ "$arg" == rtsp://* ]] || [[ "$arg" == http://* && "$arg" == *m3u8* ]]; then
IS_LIVE=true
break
fi
done
if [ "$IS_LIVE" = true ]; then
# Wir bauen die ARGS komplett neu, um die Positionierung zu garantieren
NEW_ARGS=()
FOUND_AUDIO=false
for i in "${!ARGS[@]}"; do
# Wenn wir das Ziel-File erreichen (letztes Argument),
# fügen wir unsere Spezial-Parameter davor ein.
if [ $i -eq $((${#ARGS[@]} - 1)) ]; then
# Wenn bisher kein Audio-Codec gefunden wurde, erzwingen wir Video + Audio Mapping
if [ "$FOUND_AUDIO" = false ]; then
# -map 0:v:0 -> Nimm das erste Video-Signal
# -map 0:a:0? -> Nimm das erste Audio-Signal (falls vorhanden)
NEW_ARGS+=("-map" "0:v:0" "-map" "0:a:0?" "-codec:a:0" "libfdk_aac" "-b:a" "128k")
MODIFIED="JA (Full Map + fdk_aac)"
fi
fi
# Aktuelles Argument hinzufügen
NEW_ARGS+=("${ARGS[$i]}")
# Prüfen, ob Jellyfin schon Audio-Parameter liefert (falls ja, ersetzen wir sie)
if [[ "${ARGS[$i]}" == "-codec:a:0" || "${ARGS[$i]}" == "-c:a" ]]; then
# Der Codec ist immer das NÄCHSTE Element im Array
# Das wird im nächsten Schleifendurchlauf durch den Check oben überschrieben oder wir machen es hier:
# Da das Skript komplexer wird, belassen wir es beim "Erzwingen"-Ansatz,
# da dein Log zeigt, dass Jellyfin es eh vergisst.
FOUND_AUDIO=true
fi
done
ARGS=("${NEW_ARGS[@]}")
fi
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Live: $IS_LIVE | Mod: $MODIFIED | Cmd: ${ARGS[*]}" >> "$LOGFILE"
exec /usr/lib/jellyfin-ffmpeg/ffmpeg.original "${ARGS[@]}"