## 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`)_