Tabellone, badge e brand sono ricodificati nel flusso _air via OverlayRelay; sync punteggio HTTP, volume condiviso rails/sidekiq, qualità 720p migliorata e badge CONNECTING in ripresa da pausa. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
1.2 KiB
Bash
Executable File
34 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# Slate MP4 per MediaMTX alwaysAvailable (pausa / attesa / perdita rete).
|
|
# H.264 1280x720 30fps + AAC 48kHz mono (allineato all'app Android).
|
|
set -e
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
OUT_DIR="$(cd "$(dirname "$0")/../slates" && pwd)"
|
|
BRAND_IMAGE="${BRAND_IMAGE:-$ROOT/brand/CopertinaCanale_6.png}"
|
|
OUT="$OUT_DIR/offline.mp4"
|
|
|
|
if [ ! -f "$BRAND_IMAGE" ]; then
|
|
echo "Manca immagine brand: $BRAND_IMAGE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
BRAND_DIR="$(cd "$(dirname "$BRAND_IMAGE")" && pwd)"
|
|
BRAND_FILE="$(basename "$BRAND_IMAGE")"
|
|
|
|
docker run --rm \
|
|
-v "$OUT_DIR:/out" \
|
|
-v "$BRAND_DIR:/brand:ro" \
|
|
linuxserver/ffmpeg:latest \
|
|
-loop 1 -framerate 30 -i "/brand/$BRAND_FILE" \
|
|
-f lavfi -i anullsrc=r=48000:cl=mono \
|
|
-filter:v "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2:color=0x0a0a0e" \
|
|
-map 0:v -map 1:a \
|
|
-t 30 -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.1 \
|
|
-x264-params "keyint=30:min-keyint=30:scenecut=0:bframes=0" \
|
|
-g 30 -keyint_min 30 -force_key_frames "expr:gte(t,n_forced*1)" \
|
|
-preset fast \
|
|
-c:a aac -b:a 128k -ac 1 -shortest -y /out/offline.mp4
|
|
|
|
echo "Created $OUT from $BRAND_IMAGE"
|