54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
[ -f "$ROOT_DIR/config/system-stack.env" ] && set -a && . "$ROOT_DIR/config/system-stack.env" && set +a
|
|
[ -f "$ROOT_DIR/config/hardware.env" ] && set -a && . "$ROOT_DIR/config/hardware.env" && set +a
|
|
|
|
: "${SRS_SRT_URL:=srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=request&latency=10}"
|
|
|
|
try_mpv_drm() {
|
|
command -v mpv >/dev/null 2>&1 || return 1
|
|
[[ -e /dev/dri/card0 ]] || return 1
|
|
exec mpv \
|
|
--no-config \
|
|
--profile=low-latency \
|
|
--fullscreen \
|
|
--osc=no \
|
|
--osd-level=0 \
|
|
--no-audio \
|
|
--untimed \
|
|
--cache=no \
|
|
--vo=gpu \
|
|
--gpu-context=drm \
|
|
--hwdec=auto-safe \
|
|
"$SRS_SRT_URL"
|
|
}
|
|
|
|
try_ffplay_gui() {
|
|
command -v ffplay >/dev/null 2>&1 || return 1
|
|
export DISPLAY="${DISPLAY:-:0}"
|
|
if [[ -n "${FFPLAY_SDL_DRIVER:-}" ]]; then
|
|
export SDL_VIDEODRIVER="${FFPLAY_SDL_DRIVER}"
|
|
fi
|
|
exec ffplay -fs -nostats -hide_banner \
|
|
-fflags nobuffer -flags low_delay -framedrop \
|
|
-probesize 32 -analyzeduration 0 -sync ext -infbuf \
|
|
-vf "setpts=PTS-STARTPTS" \
|
|
"$SRS_SRT_URL"
|
|
}
|
|
|
|
case "${LIVE_HDMI_PLAYER:-auto}" in
|
|
mpv-drm)
|
|
try_mpv_drm
|
|
;;
|
|
ffplay-x11)
|
|
try_ffplay_gui
|
|
;;
|
|
esac
|
|
|
|
try_mpv_drm || try_ffplay_gui
|
|
|
|
echo "No compatible HDMI playback stack found. Install mpv for DRM/KMS or ffplay + X11." >&2
|
|
exit 1
|