## How to change settings
You can configure the Streaming Engine in **two ways**:
- Via Streaming Engine Manager (Windows tray tool, only available when the XProtect Integration is installed)
- Via the Web UI
> [!warning]
> These are **advanced settings**. Please change them carefully — incorrect values can cause the Streaming Engine to **not run as expected** (or fail to start).
### Via the Web UI
- Open the Streaming Engine web application.
- Click **Settings** in the top navigation (route: **/settings**).
- Change values.
![[z_img/ea87aed507692aa0181f9afacb95b196_MD5.jpg|700]]
<div class="page-break" style="page-break-before: always;"></div>
## Configuration Settings
### Streaming Engine Settings
- **.NET Core Standalone Mode** – Use .NET 8 streaming server **without** .NET 4 service (no XProtect connectivity). _(Default: `false`)_
- **Bypass Management Client Stream Activation** – Ignore per-camera activation in XProtect Management Client (all cameras streamable). _(Default: `false`)_
- **Enable .NET CORE Streaming Server** – Use the new .NET 8 streaming server. _(Default: `false`)_
- **Enable Performance Counters** – Log CPU/RAM counters with stats. _(Default: `true`)_
- **Force GC Period** – Force a garbage collection every N seconds (0 = OS default). _(Default: `0`)_
- **Load Balancer Enable Secure RTSP (RTSPS)** – Use RTSPS when the Load Balancer redirects (requires streaming certificate). _(Default: `false`)_
- **Load Balancer External RTSP URL** – Explicit external base RTSP URL (e.g., `rtsp://1.1.1.1:554`) used by the Load Balancer; blank = hostname. _(Default: empty)_
- **Load Balancer Send Info Period [ms]** – How often to send stats (ms). _(Default: `1000`)_
- **Load Balancer Stats Enabled** – Send load stats to the Load Balancer each second. _(Default: `false`)_
- **Load Balancer URL** – One or more URLs (one per line) to receive stats. _(Default: includes `https://127.0.0.1:45338` if empty)_
- **Log Level** – `Normal`, `Debug`, or `Trace` (higher levels generate larger logs). _(Default: `Normal`)_
- **Log stats frequency (seconds)** – Interval for logging performance stats. _(Default: `10`)_
- **Managed FFMPEG Streams** – List of FFMPEG command lines the engine will spawn and manage. _(Default: empty)_
- **MP4 Files path** – Folder scanned for MP4 files (for HLS exposure). _(Default: `C:\ProgramData\ORBNET\Streaming Engine\MP4`)_
- **Publishing Points [Name | Path/URL]** – Add MP4 file paths or RTSP URLs to expose as streams. _(Default: empty)_
- **Show the thumbnail of the camera** – Show camera thumbnail in the viewer. _(Default: `true`)_
- **Temporary MP4 filepath for HLS Playback** – Temp folder for HLS playback. _(Default: `C:\ProgramData\ORBNET\Streaming Engine\MP4Temp`)
- **Show the mini video player** – The live video can be started on mini player. _(Default: `false`)_
- **Show the MP4 Fragments option** – MP4 Fragments option will be visible on popup live player. _(Default: `false`)_
---
### API Settings
- **API Authentication Mechanism** – `None`, `Basic`, `Digest`, or **`JSON Web Token`**. _(Default: `None`)_
- **API External IP** – Public IP used when computing RTSP URLs for clients.
- **API Port** – HTTP port for the REST API. _(Default: `45333`)_
- **API Secure Port** – HTTPS port for the REST API (requires certificate). _(Default: `45334`)_
- **Enable Web Streaming** – Master toggle for HLS/WebRTC features. _(Default: `true`)_
- **Exports Auto-Delete Days** – Auto-delete exports after N days. _(Default: `5`)_
- **Exports File Path** – Folder where MKV exports are saved. _(Default: `C:\ProgramData\ORBNET\Streaming Engine\Exports`)_
- **HLS File Path** – Folder to serve `.m3u8`/segments from (**don’t append camera ID**). _(Default: `C:\ProgramData\ORBNET\Streaming Engine\HLS`)_
- **Streaming Certificate Thumbprint** – TLS certificate for secure streaming (RTSPS/RTMPS/WebRTC/HLS).
- **Web Streaming Port** – HTTP port for HLS/WebRTC. _(Default: `8888`)_
- **Web Streaming Secure Port** – HTTPS port for HLS/WebRTC. _(Default: `8889`)_
---
### API Settings NET Core
- **API Binding URLs** – Add one HTTP(S) binding per line for the API to listen on. _(Default: `https://*:`45336)_
- **API Certificate Store Name** – Windows certificate store to search for the thumbprint (e.g., `My`, `Root`). _(Default: `My`)_
- **API Certificate Thumbprint** – Thumbprint of the TLS certificate used for HTTPS API endpoints.
---
### HLS Settings
- **Enable HLS** – LL-HLS option will be visible on popup live player. _(Default: `true`)_
- **Enable LL-HLS** – Enable Low-Latency HLS. _(Default: `true`)_
- **Enable Maximum Performance** – Use only for >1000 concurrent users (higher resource use). _(Default: `false`)_
- **HLS Authentication Mechanism** – `None` or `Token` (obtain token via API). _(Default: `None`)_
- **Inactivity Timout (s)** – Drop inactive HLS sessions after N seconds. _(Default: `30`)_
- **Minimum Segment Duration (Seconds)** – Smaller = lower latency; Apple recommends 5s. _(Default: `5`)_
- **Timeshift Buffer Duration (Seconds)** – Per-stream buffer; **must be ≥ 3 × Minimum Segment**. _(Default: `15`)_
---
### JWT Settings NET Core
- **JWT Access Token Expiry Minutes** – Minutes before access tokens expire. _(Default: `5`)_
- **JWT Audience** – Expected `aud` claim. _(Default: `orbnet-streaming-engine-client`)_
- **JWT Issuer** – `iss` claim placed in tokens. _(Default: `orbnet-streaming-engine-core`)_
- **JWT Private Secret Path** – Path to `private.pem` used to sign JWTs (if issuing tokens). _(Default: `%ProgramData%\ORBNET\Streaming Engine\secrets\private.pem`)_
- **JWT Public Secret Path** – Path to `public.pem` used to validate JWTs. _(Default: `%ProgramData%\ORBNET\Streaming Engine\secrets\public.pem`)_
- **JWT Refresh Clock Skew Minutes** – Allowed clock skew (minutes). _(Default: `0`)_
- **JWT Refresh Token Expiry Days** – Days before refresh tokens expire. _(Default: `0.5`)_
---
### RTMP Server Settings
- **RTMP Discard Audio Channels** – Drop audio globally on RTMP inputs (can help stability). _(Default: `false`)_
- **RTMP Server Port** – RTMP TCP port. _(Default: `1935`)_
- **RTMP Server Secure Port** – RTMPS TCP port. _(Default: `1936`)_
---
### RTSP Server Settings
- **Optimize For RTSP Only (disables all other protocols)** – Disables WebRTC/HLS/RTMP/SRT for a lean RTSP-only server. _(Default: `false`)_
- **Reconnect Timeout (Seconds)** – Wait before responding when a stream is unavailable; also used to tear down idle sessions without keep-alive. _(Default: `10`)_
- **RTSP Authentication Mechanism** – Client auth mode: `None`, `Basic_Digest`, `Basic_Digest_Token`, `TokenOnly`. _(Default: `None`)_
- **RTSP Server Port** – Primary RTSP TCP port. _(Default: `554`)_
- **RTSP Server SSL Port** – Secure RTSP (RTSPS) TCP port. _(Default: `555`)_
- **Syncronous RTSP** – Send frames no faster than client can receive (drops GOPs if the client lags). _(Default: `true`)_
---
### SRT Server Settings
- **Enable Multi-Stream SRT Server** – Turn on the built-in SRT server (license required). _(Default: `true`)
- **Default MTU** – Modify the maximum transmission unit (default=1500)
- **Multi-Stream UDP Port** – UDP port for SRT. _(Default: `21330`)_
- **Enable Multi-Stream IPv6** – Enable IPv6 for SRT. _(Default: `false`)_
- **Multi-Stream SRT Passphrase** – Optional encryption (10–79 chars). Append to URL with `?orbv-passphrase=...`. _(Default: `0123456789`)_
---
### UDP Settings
- **Enable UDP** – Allow RTSP over UDP. _(Default: `false`)_
- **UDP sending port override** – Force a specific **remote** UDP port (`-1` disables). _(Default: `-1`)_
- **UDP Start Port** – First local UDP port to try; engine moves up if taken (max +1000). _(Default: `50000`)_
---
### WebRTC Settings
- **a. Enable WebRTC Server** – Toggle the WebRTC server. _(Default: `false`)_
- **a. WebRTC Path** – WebSocket path for signaling. _(Default: `/rtc`)_
- **b. Google TURN Server URL** – Public STUN/TURN if you aren’t hosting your own. _(Default: `stun:stun.l.google.com:19302`)_
- **c. Enable local TURN Server** – Start a local TURN server instead of Google STUN. _(Default: `false`)_
- **d. TURN Server Public IPv4** – Public IPv4 for TURN.
- **e. TURN Server Public IPv6 (Optional)** – Public IPv6 for TURN.
- **f. TURN Server Port** – TURN UDP/TCP port. _(Default: `3478`)_
- **g. TURN Server Secure Port** – TLS port for secure TURN. _(Default: `5349`)_
- **h. TURN Server Username** – TURN username. _(Default: `username`)_
- **i. TURN Server Password** – TURN password. _(Default: `password`)_
---
### XProtect Service API Settings
- **API Port** – TCP port that the RESTFULL API will use for HTTP. _(Default: `45333`)_
- **API Secure Port** – TCP port that the RESTFULL API will use for HTTPS. _(Default: `45334`)_
---
### XProtect Settings
- **XProtect Management Server IP** – IP address of the XProtect Management Server. _(Default: `127.0.0.1`)_
- **XProtect Management Server Port** - TCP Port of the XProtect Management Server. _(Default: `80`)_
- **Secure Only** - Force a secure connection to XProtect (requires certificates). _(Default: `false`)_
- **Log in with service account credentials** - Uses the windows account that is running the "XProtect Orbnet Streaming Engine" service to login to Milestone. _(Default: `false`)_
- **XProtect Basic User** - Enter the name of the XProtect basic user account. Only works if "Log in with service account credentials" is set to false.
- **XProtect Basic User Password** - Enter the password of the XProtect basic user account. Only works if "Log in with service account credentials" is set to false.
- **Enable Configuration Changed Monitoring** - Used to detect when the XProtect Configuration has changed so that newly added cameras can be streamed out. _(Default: `true`)_
- **Configuration JSON Quick Load** - Load cameras once and add to JSON file. The configuration will ONLY be reloaded of the JSON file is manually deleted. _(Default: `false`)_
- **Subscribe to all XProtect Events** - Influences performance, used to listen to Motion Start and Stop events and user defined events. _(Default: `false`)_
- **Subscribe to all XProtect State Changes** - Influences performance, used to listen to Recording Server Failover state changes for Load Balancing. _(Default: `false`)_
- **Send Dummy keyframes while waiting for first keyframe from stream** - Use this feature to send a black dummy frame (ORBNET Logo + No Frames text) while waiting for the first keyframe to appear. _(Default: `false`)_
- **Intra-service transport mode** - Memory Pipe mode works for live streams only. Select the transport mode to send live and playback streams from the .NET4 service to the .NET Core service. _(Default: `Memory Pipe`)_
- **Keep Streams Open** - Any opened stream stays open (Recommended for RTMP to YouTube). _(Default: `false`)_
- **Enable Audio Tracks** - Will take the first audio track in a hardware device and associate it to the video track. _(Default: `false`)_
- **Auto Reconnect on Empty Frames** - Empty frames can be received from the XProtect Recording Servers under certain conditions. Reconnect to the MIP SDK if this happens more than 3 times. _(Default: `false`)_
- **Log All Camera Statuses** - If enabled, will log all XProtect camera status changes (motion, recording, connected, enabled, licensed). _(Default: `false`)_