<AMS_DIR>/webapps/<AppName>/WEB-INF/red5-web.properties and can be configured through the web panel or by editing the properties file directly.
Streaming Settings
Recording Formats
Enable/disable MP4 recording. If enabled, an MP4 file is created in the
<APP_DIR>/streams directory.Enable/disable WebM recording.
Enable/disable HLS recording. If enabled, HLS files (m3u8 and ts) are created in the
<APP_DIR>/streams directory and HLS playing is enabled.Enable/disable DASH recording.
File Naming
Add date and time to MP4 file names. If enabled, timestamps are added to recorded MP4 files.
Add date and time to HLS file names (.m3u8 and .ts files).
Format string for output file names. Supports the following placeholders:
%r: Resolution (e.g., “720p”)%b: Bitrate (e.g., “1500kbps”){customText}: Custom text in curly braces
"%r%b"→stream1_720p1500kbps"{HD}%r%b"→stream1_HD720p1500kbps"%r{custom}%b"→stream1_720pcustom1500kbps
File Cleanup
Delete HLS files (m3u8 and ts) after the broadcast has finished.
Delete DASH files (mpd and m4s) after the broadcast has finished.
HLS Configuration
Duration of segments in seconds. Segments will be cut on the next key frame after this time has passed.
Maximum number of playlist entries in m3u8 files. If 0, the list file will contain all segments.
HLS playlist type. Can be “event” or “vod”. Check HLS documentation for EXT-X-PLAYLIST-TYPE.
HLS segment file type. Can be “mpegts” or “fmp4”. fmp4 is compatible for playing HEVC HLS streams.
Suffix format for HLS segment files.
- Default:
%09d(9 digit incremental) - With date:
%Y%m%d-%s - Combined:
%s-%%09d(requires +second_level_segment_index in hlsflags)
HLS flags for FFmpeg HLS Muxer. Separate multiple options with See FFmpeg HLS documentation for details.
+ or -.Example:HTTP endpoint to push the HLS stream.
Full path to HLS encryption key info file. Format:Example:
DASH Configuration
Duration of DASH segments in seconds.
Duration of DASH fragments. Fragments are a property of fragmented MP4 files (moof + mdat).
Target latency for DASH streaming in seconds.
Number of files in the DASH manifest.
Number of segments kept outside the manifest before removing from disk.
Enable low latency DASH. Effective if DASH is enabled.
Enable low latency HLS via DASH muxer. Effective if DASH is enabled.
Enable HLS through DASH muxer. Effective if DASH is enabled.
Use timeline in DASH muxing.
Use HTTP streaming in Low Latency DASH. If true, sends files through HTTP. If false, writes files to disk directly.
HTTP endpoint for DASH/CMAF streams.
WebRTC Settings
Enable/disable WebRTC playing.
Frame rate for video publishing to WebRTC players.
Minimum port number for WebRTC connections. Must be less than webRTCPortRangeMax.
Maximum port number for WebRTC connections. Must be greater than webRTCPortRangeMin.
STUN or TURN server URI for WebRTC ICE candidates. Can be a STUN or TURN URL.
TURN server username for WebRTC ICE candidates. Requires stunServerURI and turnServerCredential to be effective.
TURN server credential for WebRTC ICE candidates. Requires stunServerURI and turnServerUsername to be effective.
Enable TCP candidates for WebRTC connections. If false, only UDP will be used.
WebRTC SDP semantics. Can be “planB” or “unifiedPlan”.
Port allocator flags for WebRTC:
PORTALLOCATOR_DISABLE_UDP = 0x01PORTALLOCATOR_DISABLE_STUN = 0x02PORTALLOCATOR_DISABLE_RELAY = 0x04
Enable/disable IPv6 candidates for WebRTC.
Application-level WebRTC viewer limit. -1 means unlimited.
Interval in milliseconds for requesting key frames in SFU mode.
Timeout in milliseconds for WebRTC client to start. Also used as reconnection timeout for publishers in fluctuating networks.
Use the original WebRTC stream in adaptive bitrate scenarios. If true and adaptive bitrate is enabled, both original and transcoded streams are available.
Replace ICE candidate address with server address. Requires serverName to be set in conf/red5.properties.
Timeout in milliseconds for ICE gathering process, especially for WHIP ingestion.
Drop WebRTC ingest if no audio or video packets are received within webRTCClientStartTimeoutMs.
Adaptive Bitrate (ABR)
Encoder settings in JSON array format for adaptive bitrate streaming. If empty, SFU mode will be active.Example:
Add the original stream to the HLS playlist if adaptive bitrate is enabled.
Force stream decoding even if there is no adaptive bitrate setting.
Stats-Based ABR
Enable statistics-based adaptive bitrate switching algorithm.
Packet loss percentage threshold to switch to lower resolution.
Packet loss percentage threshold to switch to higher resolution.
Round trip time threshold in milliseconds to switch to higher resolution.
Jitter threshold in milliseconds to switch to higher resolution.
Excessive Bandwidth Algorithm
Enable the excessive bandwidth algorithm that attempts to switch to higher bitrate even when bandwidth seems insufficient.
Bandwidth threshold in bps for the excessive bandwidth algorithm.
Number of consecutive calls needed to trigger bitrate switch.
Number of attempts before switching back to lower quality.
Packet loss difference threshold to immediately switch back to lower quality.
RTT measurement difference threshold to immediately switch back to lower quality.
Preview/Thumbnail Settings
Period in milliseconds for creating preview images. Files are created in
<APP_DIR>/preview directory.If true, new stream previews with the same ID overwrite existing files. If false, previous files are saved with a suffix.
Height in pixels of the preview image.
Generate preview images if adaptive bitrate settings exist.
Preview image format. Can be “png”, “jpg”, or “webp”.
Preview quality for JPG and WEBP formats.
- JPG: 2-31 (2 = best quality, 31 = worst quality). Recommended: 5
- WEBP: 0-100 (0 = worst quality, 100 = best quality). Recommended: 75
Stream Sources
Period in seconds for automatically restarting stream fetchers. 0 means disabled.
Automatically start stream sources when server starts.
Buffer time in milliseconds for stream fetchers. 0 means no buffer.
RTSP transport type for pulling streams. Can be string or integer (OR combination):
- “udp” or
1 - “tcp” or
2 - “udp_multicast” or
4 - “http” or
256 - “https” or
512
3 (udp OR tcp).Timeout in milliseconds for RTSP connections.
Maximum analyze duration in milliseconds for determining video and audio existence in RTMP, SRT, and stream sources.
Stream Limits
Maximum acceptable FPS for incoming streams. 0 means no limit.
Maximum acceptable resolution for incoming streams. 0 means no limit.
Maximum acceptable bitrate for incoming streams. 0 means no limit.
Application-level total incoming stream limit. -1 means unlimited.
Maximum audio tracks in a multitrack playing connection. -1 means unlimited.
Maximum video tracks in a multitrack playing connection. -1 means unlimited.
Data Channel
Enable/disable WebRTC data channel. When enabled, publishers can send messages to players.
Distribution mode for player messages:
"none": Player messages are delivered to nobody"publisher": Player messages are delivered only to publisher"all": Player messages are delivered to everyone (publisher and all players)
Webhook URL for data channel messages. All data channel messages are also sent to this endpoint.
Send audio level information from RTP headers to viewers via data channel. Useful for video conferencing to detect active speakers.
Audio level threshold for assigning audio tracks in limited track conferences. Range: 0-127 (0 = max level, 127 = silent).
Webhooks
Webhook URL for event notifications. See Webhook Integration for details.
Webhook URL for authentication when publishing streams.
Webhook URL for WebRTC play authentication.
Number of retry attempts on webhook POST failure.
Delay in milliseconds between webhook retry attempts.
Period in milliseconds for sending stream status updates to webhook. -1 means disabled. Minimum recommended: 5000ms.
Content type for webhook POST requests. For backward compatibility, can be set to “application/x-www-form-urlencoded”.
Scripts
Path to bash script called when muxing finishes.
Path to bash script called when streaming starts.
Path to bash script called when stream ends.
Path to bash script called when stream idle timeout occurs.
Path to bash script called when VoD upload finishes.
Storage
Subfolder path for storing media files. Supports placeholders:
%m: Main track ID%s: Stream ID
"%m"→ streams/mainTrackId/0001.ts"myStreams/%m/%s"→ streams/myStreams/mainTrackId/streamId/0001.ts
Subfolder for recording files (MP4 and WebM).
VoD Settings
Directory for VoD files. Deprecated - use VoD import REST API instead.
Access Control
Only accept streams that are pre-registered in the database. Streams must be added via REST API before publishing.
Only accept rooms that are pre-registered in the database.
Prevent playing the same stream ID more than once in the same WebRTC session.
Multitrack & Conference
Visibility matrix defining which participant roles can see each other in conferences.Default configuration:
RTMP Settings
RTMP ingesting buffer time in milliseconds. Server buffers this amount of video to compensate for stream interruptions.
Enable RTMP playback. Note: RTMP playback is deprecated and will be removed. Use CMAF/DASH instead.
Height of the stream transcoded from WebRTC to RTMP forwarding.
Relay RTMP metadata to muxers for playback synchronization.
SRT Settings
Time in milliseconds to wait for SRT packets to be received.
Misc Settings
Write viewer statistics (HLS, WebRTC) to the datastore.
Write subscriber connect/disconnect events to datastore. Alternatively available in analytics logs.
Comma-separated CIDR addresses allowed to access REST API. Must be in CIDR format (a.b.c.d/x).
Comma-separated CIDR addresses allowed to publish streams. Empty means accept from everywhere.
Forward HTTP requests with these extensions to httpForwardingBaseURL. Comma-separated (e.g., “mp4,m3u8”).
Base URL for forwarding HTTP requests.
Value for Content-Security-Policy HTTP response header to reduce XSS risks.
Maximum idle time in seconds between origin and edge connection before re-establishing.
Enable ID3 tag support for HLS.
Size of encoding queue for frames waiting to be encoded (default: 5 seconds of 30fps stream).
Custom key-value settings for application-specific configuration.
