# MediaMTX Configuration for SquashKiwi Streaming # General Settings logLevel: info logDestinations: [stdout] # API Configuration api: yes apiAddress: :9997 # Metrics metrics: yes metricsAddress: :9998 # RTSP Server rtsp: yes rtspAddress: :8554 protocols: [tcp, udp] readTimeout: 10s writeTimeout: 10s # HLS Server hls: yes hlsAddress: :8888 hlsAllowOrigin: '*' hlsSegmentCount: 10 hlsSegmentDuration: 2s hlsPartDuration: 200ms # WebRTC Server webrtc: yes webrtcAddress: :8889 webrtcAllowOrigin: '*' # Path Configuration paths: # Main court camera stream court_main: # Note: Password with special characters should be URL-encoded in service.env # e.g., ! becomes %21, @ becomes %40, etc. source: rtsp://${CAMERA_USER}:${CAMERA_PASSWORD}@${CAMERA_IP}:${CAMERA_RTSP_PORT}/cam/realmonitor?channel=1&subtype=0 sourceProtocol: tcp sourceOnDemand: no # Authentication publishUser: admin publishPass: ${PUBLISH_PASSWORD} # Recording record: yes recordPath: /recordings/${COURT_ID}_%Y%m%d_%H%M%S.mp4 # recordFormat is not supported in MediaMTX - recordings are always in .mp4 format recordSegmentDuration: 1h recordDeleteAfter: 720h # Generate HLS sourceGenerateHLS: yes # Generate WebRTC sourceGenerateWebRTC: yes # Sub-stream for lower bandwidth court_sub: source: rtsp://${CAMERA_USER}:${CAMERA_PASSWORD}@${CAMERA_IP}:${CAMERA_RTSP_PORT}/cam/realmonitor?channel=1&subtype=1 sourceProtocol: tcp sourceOnDemand: yes sourceGenerateHLS: yes hlsSegmentDuration: 4s