lib/mediamtx/mediamtx.yml
@@ -1,8 +1,12 @@
###############################################
# Global settings
# Settings in this section are applied anywhere.
###############################################
# General settings
# Global settings -> General
# Sets the verbosity of the program; available values are "error", "warn", "info", "debug".
# Verbosity of the program; available values are "error", "warn", "info", "debug".
logLevel: info
# Destinations of log messages; available values are "stdout", "file" and "syslog".
logDestinations: [stdout]
@@ -40,29 +44,33 @@
# Enable the HTTP API.
api: yes
# Address of the API listener.
apiAddress: 192.168.1.227:9997
apiAddress: 112.98.126.2:9997
# Enable Prometheus-compatible metrics.
metrics: no
# Address of the metrics listener.
metricsAddress: 127.0.0.1:9998
metricsAddress: 112.98.126.2:9998
# Enable pprof-compatible endpoint to monitor performances.
pprof: no
# Address of the pprof listener.
pprofAddress: 127.0.0.1:9999
pprofAddress: 112.98.126.2:9999
# Command to run when a client connects to the server.
# Prepend ./ to run an executable in the current folder (example: "./ffmpeg")
# This is terminated with SIGINT when a client disconnects from the server.
# The following environment variables are available:
# * RTSP_PORT: RTSP server port
# * MTX_CONN_TYPE: connection type
# * MTX_CONN_ID: connection ID
runOnConnect:
# Restart the command if it exits.
runOnConnectRestart: no
# Command to run when a client disconnects from the server.
# Environment variables are the same of runOnConnect.
runOnDisconnect:
###############################################
# RTSP settings
# Global settings -> RTSP
# Allow publishing and reading streams with the RTSP protocol.
rtsp: yes
@@ -77,19 +85,19 @@
# Available values are "no", "strict", "optional".
encryption: "no"
# Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional".
rtspAddress: :7554
rtspAddress: :8554
# Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional".
rtspsAddress: :7322
rtspsAddress: :8322
# Address of the UDP/RTP listener. This is needed only when "udp" is in protocols.
rtpAddress: :7000
rtpAddress: :8000
# Address of the UDP/RTCP listener. This is needed only when "udp" is in protocols.
rtcpAddress: :7001
rtcpAddress: :8001
# IP range of all UDP-multicast listeners. This is needed only when "multicast" is in protocols.
multicastIPRange: 224.1.0.0/16
# Port of all UDP-multicast/RTP listeners. This is needed only when "multicast" is in protocols.
multicastRTPPort: 7002
multicastRTPPort: 8002
# Port of all UDP-multicast/RTCP listeners. This is needed only when "multicast" is in protocols.
multicastRTCPPort: 7003
multicastRTCPPort: 8003
# Path to the server key. This is needed only when encryption is "strict" or "optional".
# This can be generated with:
# openssl genrsa -out server.key 2048
@@ -102,7 +110,7 @@
authMethods: [basic]
###############################################
# RTMP settings
# Global settings -> RTMP
# Allow publishing and reading streams with the RTMP protocol.
rtmp: yes
@@ -122,7 +130,7 @@
rtmpServerCert: server.crt
###############################################
# HLS settings
# Global settings -> HLS
# Allow reading streams with the HLS protocol.
hls: no
@@ -178,7 +186,7 @@
hlsDirectory: ''
###############################################
# WebRTC settings
# Global settings -> WebRTC
# Allow publishing and reading streams with the WebRTC protocol.
webrtc: yes
@@ -207,27 +215,30 @@
  # needed when server and clients are on different LANs.
  # TURN/TURNS servers are needed when a direct connection between server and
  # clients is not possible. All traffic is routed through them.
- url: stun:stun.l.google.com:19302
- url: stun:112.98.126.2:3478
  # if user is "AUTH_SECRET", then authentication is secret based.
  # the secret must be inserted into the password field.
  username: ''
  password: ''
  username: 'admin'
  password: '123456'
# List of interfaces that will be used to gather IPs to send
# to the counterpart to establish a connection.
webrtcICEInterfaces: []
# List of public IP addresses that are to be used as a host.
# This is used typically for servers that are behind 1:1 D-NAT.
webrtcICEHostNAT1To1IPs: [192.168.1.227]
webrtcICEHostNAT1To1IPs: [112.98.126.2]
# Address of a ICE UDP listener in format host:port.
# If filled, ICE traffic will pass through a single UDP port,
# allowing the deployment of the server inside a container or behind a NAT.
webrtcICEUDPMuxAddress: 192.168.1.227:8189
webrtcICEUDPMuxAddress:
# Address of a ICE TCP listener in format host:port.
# If filled, ICE traffic will pass through a single TCP port,
# allowing the deployment of the server inside a container or behind a NAT.
# Using this setting forces usage of the TCP protocol, which is not
# optimal for WebRTC.
webrtcICETCPMuxAddress: 192.168.1.227:8189
webrtcICETCPMuxAddress: 112.98.126.2:1234
###############################################
# SRT settings
# Global settings -> SRT
# Allow publishing and reading streams with the SRT protocol.
srt: yes
@@ -235,18 +246,14 @@
srtAddress: :8890
###############################################
# Path settings
# Default path settings
# These settings are path-dependent, and the map key is the name of the path.
# It's possible to use regular expressions by using a tilde as prefix,
# for example "~^(test1|test2)$" will match both "test1" and "test2",
# for example "~^prefix" will match all paths that start with "prefix".
# Settings under the path "all" are applied to all paths that do not match
# another entry.
paths:
  all:
# Settings in "pathDefaults" are applied anywhere,
# unless they are overridden in "paths".
pathDefaults:
    ###############################################
    # General path settings
  # Default path settings -> General
    # Source of the stream. This can be:
    # * publisher -> the stream is provided by a RTSP, RTMP, WebRTC or SRT client
@@ -280,9 +287,34 @@
    sourceOnDemandCloseAfter: 10s
    # Maximum number of readers. Zero means no limit.
    maxReaders: 0
  # SRT encryption passphrase require to read from this path
  srtReadPassphrase:
    ###############################################
    # Authentication path settings
  # Default path settings -> Recording
  # Record streams to disk.
  record: no
  # Path of recording segments.
  # Extension is added automatically.
  # Available variables are %path (path name), %Y %m %d %H %M %S %f (time in strftime format)
  recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S-%f
  # Format of recorded segments.
  # Available formats are "fmp4" (fragmented MP4) and "mpegts" (MPEG-TS).
  recordFormat: fmp4
  # fMP4 segments are concatenation of small MP4 files (parts), each with this duration.
  # MPEG-TS segments are concatenation of 188-bytes packets, flushed to disk with this period.
  # When a system failure occurs, the last part gets lost.
  # Therefore, the part duration is equal to the RPO (recovery point objective).
  recordPartDuration: 100ms
  # Minimum duration of each segment.
  recordSegmentDuration: 1h
  # Delete segments after this timespan.
  # Set to 0s to disable automatic deletion.
  recordDeleteAfter: 24h
  ###############################################
  # Default path settings -> Authentication
    # Username required to publish.
    # SHA256-hashed values can be inserted with the "sha256:" prefix.
@@ -303,16 +335,18 @@
    readIPs: []
    ###############################################
    # Publisher path settings (when source is "publisher")
  # Default path settings -> Publisher source (when source is "publisher")
    # allow another client to disconnect the current publisher and publish in its place.
    overridePublisher: yes
    # if no one is publishing, redirect readers to this path.
    # It can be can be a relative path  (i.e. /otherstream) or an absolute RTSP URL.
    fallback:
  # SRT encryption passphrase required to publish to this path
  srtPublishPassphrase:
    ###############################################
    # RTSP path settings (when source is a RTSP or a RTSPS URL)
  # Default path settings -> RTSP source (when source is a RTSP or a RTSPS URL)
    # protocol used to pull the stream. available values are "automatic", "udp", "multicast", "tcp".
    sourceProtocol: automatic
@@ -332,13 +366,13 @@
    rtspRangeStart:
    ###############################################
    # Redirect path settings (when source is "redirect")
  # Default path settings -> Redirect source (when source is "redirect")
    # RTSP URL which clients will be redirected to.
    sourceRedirect:
    ###############################################
    # Raspberry Pi Camera path settings (when source is "rpiCamera")
  # Default path settings -> Raspberry Pi Camera source (when source is "rpiCamera")
    # ID of the camera
    rpiCameraCamID: 0
@@ -420,11 +454,10 @@
    rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - MediaMTX'
    ###############################################
    # External commands path settings
  # Default path settings -> Hooks
    # Command to run when this path is initialized.
    # This can be used to publish a stream and keep it always opened.
    # Prepend ./ to run an executable in the current folder (example: "./ffmpeg")
  # This can be used to publish a stream when the server is launched.
    # This is terminated with SIGINT when the program closes.
    # The following environment variables are available:
    # * MTX_PATH: path name
@@ -435,9 +468,8 @@
    # Restart the command if it exits.
    runOnInitRestart: no
    # Command to run when this path is requested.
  # Command to run when this path is requested by a reader.
    # This can be used to publish a stream on demand.
    # Prepend ./ to run an executable in the current folder (example: "./ffmpeg")
    # This is terminated with SIGINT when the path is not requested anymore.
    # The following environment variables are available:
    # * MTX_PATH: path name
@@ -454,27 +486,71 @@
    # readers connected and this amount of time has passed.
    runOnDemandCloseAfter: 10s
    # Command to run when the stream is ready to be read, whether it is
  # Command to run when the stream is ready to be read, whenever it is
    # published by a client or pulled from a server / camera.
    # Prepend ./ to run an executable in the current folder (example: "./ffmpeg")
    # This is terminated with SIGINT when the stream is not ready anymore.
    # The following environment variables are available:
    # * MTX_PATH: path name
    # * RTSP_PORT: RTSP server port
    # * G1, G2, ...: regular expression groups, if path name is
    #   a regular expression.
  # * MTX_SOURCE_TYPE: source type
  # * MTX_SOURCE_ID: source ID
    runOnReady:
    # Restart the command if it exits.
    runOnReadyRestart: no
  # Command to run when the stream is not available anymore.
  # Environment variables are the same of runOnReady.
  runOnNotReady:
    # Command to run when a clients starts reading.
    # Prepend ./ to run an executable in the current folder (example: "./ffmpeg")
  # Command to run when a client starts reading.
    # This is terminated with SIGINT when a client stops reading.
    # The following environment variables are available:
    # * MTX_PATH: path name
    # * RTSP_PORT: RTSP server port
    # * G1, G2, ...: regular expression groups, if path name is
    #   a regular expression.
  # * MTX_READER_TYPE: reader type
  # * MTX_READER_ID: reader ID
    runOnRead:
    # Restart the command if it exits.
    runOnReadRestart: no
  # Command to run when a client stops reading.
  # Environment variables are the same of runOnRead.
  runOnUnread:
  # Command to run when a recording segment is created.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentCreate:
  # Command to run when a recording segment is complete.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentComplete:
###############################################
# Path settings
# Settings in "paths" are applied to specific paths, and the map key
# is the name of the path.
# Any setting in "pathDefaults" can be overridden here.
# It's possible to use regular expressions by using a tilde as prefix,
# for example "~^(test1|test2)$" will match both "test1" and "test2",
# for example "~^prefix" will match all paths that start with "prefix".
paths:
  # example:
  # my_camera:
  #   source: rtsp://my_camera
  # Settings under path "all_others" are applied to all paths that
  # do not match another entry.
  all_others: