# dividia/nvr-testcam — RTSP test pattern generator
#
# Runs mediamtx + ffmpeg to serve 1-4 RTSP test streams on port 8554.
# Each stream is a unique color/labeled test pattern at configurable resolution.
#
# Usage:
#   docker run --rm --network host dividia/nvr-testcam          # 4 streams
#   docker run --rm --network host -e NUM_STREAMS=2 dividia/nvr-testcam
#   docker run --rm -p 8554:8554 dividia/nvr-testcam            # bridge mode
#
# Streams available at:
#   rtsp://HOST:8554/cam1  (1920x1080, 15fps)
#   rtsp://HOST:8554/cam2  (1920x1080, 15fps)
#   rtsp://HOST:8554/cam3  (1280x720,  15fps)
#   rtsp://HOST:8554/cam4  (1280x720,  10fps)

FROM alpine:3.21

RUN apk add --no-cache ffmpeg bash curl ttf-dejavu

# Install mediamtx
ARG MEDIAMTX_VERSION=1.11.3
RUN ARCH=$(uname -m) && \
    case "$ARCH" in \
      x86_64)  MTXARCH=amd64 ;; \
      aarch64) MTXARCH=arm64v8 ;; \
      *)       echo "Unsupported arch: $ARCH" && exit 1 ;; \
    esac && \
    curl -fsSL "https://github.com/bluenviron/mediamtx/releases/download/v${MEDIAMTX_VERSION}/mediamtx_v${MEDIAMTX_VERSION}_linux_${MTXARCH}.tar.gz" \
      | tar xz -C /usr/local/bin mediamtx

COPY mediamtx.yml /etc/mediamtx.yml
COPY start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh

EXPOSE 8554

HEALTHCHECK --interval=10s --timeout=3s --start-period=10s \
  CMD ss -tlnp | grep -q 8554 || exit 1

ENTRYPOINT ["/usr/local/bin/start.sh"]
