Add lab restream pipeline with pirate_drift logo and lib/env.sh.

Encode-once/fanout scripts, HLS output, and single overloadable env source.
Commits assets/pirate_drift.png as default watermark for cluster runs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Anton Afanasyeu
2026-07-11 15:27:24 +02:00
parent d990862b64
commit 5ca8a9f539
27 changed files with 911 additions and 1 deletions

65
lib/env.sh Normal file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env bash
# Single source of truth for pipeline variables.
# Override: export VAR=value before running, or set in config/local.env (sourced last).
#
# Requires ROOT (set by lib/common.sh before this file is sourced).
if [[ -z "${ROOT:-}" ]]; then
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
export ROOT
fi
# --- binaries ---
export FFMPEG_BIN="${FFMPEG_BIN:-ffmpeg}"
export FFPROBE_BIN="${FFPROBE_BIN:-ffprobe}"
export YTDLP_BIN="${YTDLP_BIN:-yt-dlp}"
# --- paths (logo default: assets/pirate_drift.png in repo root) ---
export LOGO_PATH="${LOGO_PATH:-${ROOT}/assets/pirate_drift.png}"
export PIPE_NAME="${PIPE_NAME:-.stream_pipe}"
export PIPE_PATH="${PIPE_PATH:-${ROOT}/${PIPE_NAME}}"
export PIPE_FIFO_SIZE="${PIPE_FIFO_SIZE:-1048576}"
export STORAGE_DIR="${STORAGE_DIR:-${ROOT}/storage}"
export RUN_DIR="${RUN_DIR:-${ROOT}/run}"
export SOURCES_LIST="${SOURCES_LIST:-${ROOT}/config/sources.list}"
export SINKS_LIST="${SINKS_LIST:-${ROOT}/config/sinks.list}"
export HLS_OUTPUT_DIR="${HLS_OUTPUT_DIR:-}"
# --- encode quality ---
export OUTPUT_PRESET="${OUTPUT_PRESET:-1080p}"
export FILTER_PROFILE="${FILTER_PROFILE:-default}"
export FPS="${FPS:-30}"
export THREADS="${THREADS:-8}"
export THREAD_QUEUE_SIZE="${THREAD_QUEUE_SIZE:-512}"
export RECORD_FORMAT="${RECORD_FORMAT:-mkv}"
# --- ingest behaviour ---
export YTDLP_ENABLED="${YTDLP_ENABLED:-1}"
export NEAR_REALTIME="${NEAR_REALTIME:-1}"
export FANOUT_RETRIES="${FANOUT_RETRIES:-5}"
# optional delogo rectangle (source coords): x:y:w:h
export DELOGO="${DELOGO:-}"
# separate audio when video track has no audio
export AUDIO_SOURCE="${AUDIO_SOURCE:-}"
# --- optional file overrides (highest priority among defaults) ---
_mp_load_env_file() {
local f="$1"
if [[ -f "${f}" ]]; then
set -a
# shellcheck disable=SC1090
source "${f}"
set +a
fi
}
_mp_load_env_file "${ROOT}/config/local.env"
# Re-apply path defaults if local.env used relative paths
export LOGO_PATH="${LOGO_PATH:-${ROOT}/assets/pirate_drift.png}"
export PIPE_PATH="${PIPE_PATH:-${ROOT}/${PIPE_NAME}}"
export STORAGE_DIR="${STORAGE_DIR:-${ROOT}/storage}"
export RUN_DIR="${RUN_DIR:-${ROOT}/run}"
export SOURCES_LIST="${SOURCES_LIST:-${ROOT}/config/sources.list}"
export SINKS_LIST="${SINKS_LIST:-${ROOT}/config/sinks.list}"