Skip to content

RTMP streams

An administrator can create a reusable stream key in Mainframe Settings → Keys → Stream keys. Enter an easy-to-type value in Custom key (optional), or leave it empty to generate a random key. Custom keys have no added prefix, are case-sensitive, and accept up to 128 printable characters; leading and trailing spaces are removed. Previously used keys, including revoked ones, cannot be reused. Save the secret when it is displayed; Mainframe stores only its hash. A key can publish several named feeds at once and does not grant API, playback, telemetry or aircraft-control access.

Choose a stream name and channel in the Publishing URL dialog and copy the generated URL, for example:

rtmp://mainframe.mainline.inc:1935/live/roof-drone/main?token=<streamKey>

For devices with separate fields, use:

Field Value
Server rtmp://mainframe.mainline.inc:1935/live/roof-drone
Stream key main?token=<streamKey>

Names and channels are case-sensitive, 1–64 letters, numbers, hyphens or underscores, starting with a letter or number. Provider-generated asset IDs are reserved. The first successful publication creates a camera named roof-drone in Assets. Its first channel becomes permanent; use a different name for another feed. Reconnecting under the same name/channel, including with a replacement key, continues the same asset and recording history. A second publisher cannot take over a connected feed.

Any valid stream key can publish an available generic camera name. Keys are team credentials rather than ownership boundaries for particular cameras. They cannot publish over an existing phone or drone asset. Use a separate key for each team or device group that you might need to revoke together.

Use H.264 video with optional AAC audio. Audio is preserved when supplied. A video-only source also works. These feeds use the shared SRS recording, recent rewind, archive packaging and browser playback pipeline. They receive the same viewer processing as other feeds, including H.264 colour-label repair. No Cloud API connection is needed.

The camera appears online and in Video Wall once fresh video writes are observed. An RTMP connection alone does not count as live video. The asset remains available offline after disconnecting, and its recordings remain available through the normal video replay controls. It has no location, telemetry or flight controls.

Generic cameras default to always recording; an explicit entity or tag record-policy override still applies. Normal recording retention applies. Viewer access uses existing entity video permissions; cameras carry the rtmp tag for role scoping.

The table shows each key’s label, generated prefix (or custom for a custom key), active-stream count, creation time and last use. Rename changes its label. Publishing URL lets you paste a saved secret to build another URL. If receiver inventory is unavailable, the stream count reads unknown and key management remains available.

Rotate creates a replacement while the old key remains valid. Update devices, then Revoke the old key. Revocation rejects new publishers immediately and disconnects existing publishers when reconciliation reaches the receiver, normally within five seconds. If the receiver is unavailable, disconnection retries. Revoking a key does not delete assets or recordings. Retiring a camera prevents it from publishing again.

Apply the normal Mainframe database migrations and deploy the updated Mainframe and web application. Set STREAM_RTMP_URL to the public RTMP origin, without /live or query parameters. Compose defaults to rtmp://DOMAIN:MEDIA_RTMP_PORT, with port 1935. Plain RTMP sends its token over the connection without TLS; an rtmps:// origin requires TLS termination configured separately.

Default admission ceilings are 1,000 generic camera assets, 128 simultaneous generic publishers and 32 publishers per key. Override them with STREAM_MAX_ASSETS, STREAM_MAX_PUBLISHERS and STREAM_MAX_PUBLISHERS_PER_KEY. These are admission limits, not measured hardware capacity. The feature uses the current single Mainframe replica and shared SRS receiver. Recording-health observations, the indexer and archive storage must be running for normal live-status and replay operation.