Mono Application - Storm Streaming Server
Storm Streaming Server operates based on "applications", which are collections of streams and the settings that govern them. Each server instance can have multiple applications, which are completely independent of each other. Each application has a unique name and a type that defines its role.
Among the things that an application allows you to define are: the method of authentication for incoming streams, whether streams should be recorded, or whether you want to use transcoding to create multiple quality versions.
The mono application is the simplest type — it combines both stream publishing (ingesting) and playback within a single server instance. This makes it the best choice for standalone deployments that do not require a multi-server cluster.
For distributed setups involving multiple server instances, see the cluster application types: Origin, Transcode, and Edge.
Sample Configuration
<Application name="mono" type="mono">
<!--
General configuration settings related to this application and its streams.
-->
<GeneralSettings>
<Description>Default application</Description>
<BroadcastLimit>300</BroadcastLimit>
<StatInterval>2</StatInterval>
<AutoThumbnails enabled="true">
<Interval>2</Interval>
<ThumbWidth>1280</ThumbWidth>
<ThumbHeight>720</ThumbHeight>
</AutoThumbnails>
</GeneralSettings>
<!--
Configuration related to ingesting streams into the application.
-->
<IngestSettings>
<AllowStreamIngest>true</AllowStreamIngest>
<AutoStreamPublish>true</AutoStreamPublish>
<AllowStreamOverwrite>true</AllowStreamOverwrite>
<Authorization enabled="false" />
</IngestSettings>
<!--
Settings related to video playback for connected clients.
-->
<PlaybackSettings>
<AllowedHarnesses>
<Harness type="storm-hls" />
<Harness type="storm-mse" />
<Harness type="generic-hls" />
<Harness type="rtmp" />
</AllowedHarnesses>
<TotalViewerLimit>3500</TotalViewerLimit>
<StreamViewerLimit>1000</StreamViewerLimit>
<FrameBufferSize>0</FrameBufferSize>
</PlaybackSettings>
<!--
Access control settings for WebSocket and HTML-based endpoints
(Storm Player Core & Storm Player UI).
-->
<StreamSecuritySettings>
<TokenProtection enabled="false">
<Secret>mysupersecret</Secret>
<HashAlgorithm>sha256</HashAlgorithm>
<TokenLifespan>10</TokenLifespan>
</TokenProtection>
<DomainAccessRights>
<AccessRight type="allow" domain="*" />
</DomainAccessRights>
</StreamSecuritySettings>
<!--
List of enabled live transcoding presets for this application.
-->
<LiveTranscoding enabled="true">
<Preset name="360p" />
<Preset name="480p" />
<Preset name="720p" />
</LiveTranscoding>
<!--
nDVR settings for live streaming.
-->
<DVRSettings enabled="false">
<CacheSize>100</CacheSize>
</DVRSettings>
<!--
Recording configuration for saving live streams to disk.
-->
<RecordingSettings enabled="false">
<FileFormat>fMP4</FileFormat>
<SavePath>/var/recordings</SavePath>
<MaxFileSize>10</MaxFileSize>
<MaxFileDuration>10</MaxFileDuration>
<CacheSize>1</CacheSize>
<MaxStorageSize>1500</MaxStorageSize>
<RemoveOldFiles>true</RemoveOldFiles>
<AutoRecording>true</AutoRecording>
</RecordingSettings>
<!--
Stream key alias configuration for dynamic stream key resolution.
-->
<StreamKeyAliasSettings enabled="false">
<AliasAutoDiscovery enabled="true">
<RequestURL>https://api.example.com/alias/{aliasName}</RequestURL>
<XApiKey>your-api-key-here</XApiKey>
<AliasExpireTime>300</AliasExpireTime>
</AliasAutoDiscovery>
</StreamKeyAliasSettings>
</Application>
Main Parameters
| Parameter | Description |
|---|---|
Application:name | Unique name of this application. All applications within config/preferences.xml must have unique names. |
Application:type | Must be set to mono for this application type. |
Configuration Blocks
The mono application supports the following configuration blocks. Click on each link for a detailed description of all available parameters.
| Block | Description |
|---|---|
| General Settings | Application description, broadcast limits, statistics interval, and automatic thumbnail generation. |
| Ingest Settings | Stream publishing control and broadcaster authorization (supports managed, request-based, file-based, and local methods). |
| Playback Settings | Allowed connection types (harnesses), viewer limits, and frame buffer configuration. |
| Stream Security Settings | Token-based playback authorization and domain-level access control for Storm Player. |
| Live Transcoding | Selection of transcoding presets to generate multiple quality variants of streams. |
| DVR Settings | In-memory cache for live-stream rewind (nDVR). |
| Recording Settings | Recording live streams to disk in fMP4, FLV, or MKV format with storage management. |
| Stream Key Alias Settings | Dynamic stream key resolution via aliases, with auto-discovery support. |
Environment Variables
All configuration fields support environment variables using the ${EV:VARIABLE_NAME} syntax. This allows you to externalize sensitive or environment-specific values such as API keys and authorization URLs.
<Authorization enabled="true" type="request">
<RequestURL>${EV:AUTH_API_URL}</RequestURL>
<XApiKey>${EV:AUTH_API_KEY}</XApiKey>
</Authorization>
Fields whose values are set via environment variables cannot be modified through the REST API.
If you have any questions or need assistance, please create a support ticket and our team will help you.