Help and user guide

Mestrio Stream Server · English documentation · Updated September 3, 2026

Mestrio Stream Server turns an Android device into a local media server and operations console. It can accept live inputs, pull remote streams, relay existing encoded media, publish local files, record sources, and expose playback endpoints to clients on the same device or network.

No transcoding is implied. Most workflows relay the source's existing H264/H265 video and audio. A protocol or player can reject a stream when its codec or container is incompatible even though the server itself is running correctly.

1. Quick start

  1. Open Overview and tap Start server.
  2. Allow notifications if Android asks. The persistent notification keeps the server visible and provides a Stop action.
  3. Open Addresses, choose the host reachable by your client, and set an example app and stream name.
  4. Publish from a camera, encoder, OBS-like client, another server, or a Workbench task to one of the generated publish addresses.
  5. Open Sources to confirm that the media source is online, inspect its tracks, copy a playback URL, or run an in-app playback test.
  6. Use Library to record a live source or import and distribute a media file. Use Monitor for sessions, traffic, server events, and WebRTC room administration.

The interactive guide under My → Interactive guide highlights the same workflow in the live interface without starting the server or creating media tasks for you.

Choosing the correct host address

2. Core concepts

Publish, pull, playback, and RTP

ActionMeaningTypical use
Publish / push into the serverAn external producer sends an encoded live stream to this device.A camera or encoder publishes RTMP, RTSP, SRT, or WebRTC WHIP.
Pull / ingestThis device actively connects to a remote playback URL and registers the received stream locally.Bring an IP camera or remote server stream into the local source list.
PlaybackA viewer connects to a local source through RTSP, RTMP, HLS, HTTP-FLV, WebRTC, or direct MP4.Watch, validate, or distribute a source.
Republish / push outThis device sends an existing local source to another server.Forward a camera to a remote RTMP/RTSP/SRT endpoint.
RTP send or receiveRaw RTP packets carry encoded tracks without a higher-level publish session.GB28181, broadcast equipment, or an integration that already negotiates port, SSRC, and transport.

Live publication versus file VOD

Port value 0

For a fixed server listener, port 0 means that listener is disabled. In the RTP receive task wizard, port 0 has a different task-level meaning: allocate an available even RTP port automatically. The app labels both cases where they appear.

3. Overview

Overview is the operating dashboard for the embedded server.

Server lifecycle

Dashboard metrics

The dashboard summarizes registered media sources, active client sessions, recording tasks, and Workbench jobs. These are operational counts, not a guarantee that every client can decode every stream.

Connection addresses

The address page generates copy-ready publish and playback URLs from the selected host, active listener ports, TLS state, access-control scope, and example app/stream name. It can show RTSP/RTSPS, RTMP/RTMPS, HLS/HTTPS HLS, HTTP(S)-FLV, WebRTC signaling, SRT, and direct web endpoints when applicable.

Do not copy a loopback address to another device. If an address contains a self-signed TLS certificate, the client must explicitly trust it or the secure connection will fail.

Runtime status and diagnostics

The runtime component view presents product-facing protocol and packaging availability. Diagnostics can check configured TCP listeners on the local interface. It does not test every remote route, UDP path, client decoder, or certificate trust store.

4. Server settings

Stop the server before editing listener ports. Saved settings take effect on the next start.

Listeners and protocols

GroupWhat it enablesNotes
HTTP / HTTPSWeb APIs, HLS, HTTP-FLV, direct MP4, and WebRTC HTTP signaling.HTTPS requires a valid imported or local certificate identity.
RTSP / RTSPSRTSP publish and playback, including file VOD sessions.RTSPS clients must trust the certificate and support RTSP over TLS.
RTMP / RTMPSCommon live publish and playback workflows.RTMPS requires compatible TLS support at the client.
WebRTCWHIP/WHEP signaling and low-latency media.Codec negotiation and network reachability still apply.
SRTEncrypted or unencrypted MPEG-TS-compatible SRT ingest and output.A matching passphrase is required when encryption is used.
RTPProxyA fixed RTP reception service.Separate from task-specific RTP receive ports.
Admin ShellAdvanced administrative command access.Off by default. It requires access control and uses user admin with the saved access token as password.

TLS certificate management

The app can use its local self-signed identity or import multiple PKCS#12 (.p12/.pfx) and combined PEM identities. Enter the password before selecting a protected identity. Review issuer, validity, and expiry status after import, then explicitly activate the identity to use on the next server start. The active identity cannot be deleted. Certificate material remains in app-managed storage.

Configuration profiles

A configuration profile captures listener ports, access-control policy, role credentials, network scope, and the selected TLS identity. Applying a profile temporarily stops a running server, validates the target, restarts it, and restores the previous configuration if startup fails.

Access control

Access control can protect publishing, playback, or both. The app generates a token of at least 16 characters and can place it into generated client addresses. HTTP clients may also use Bearer authorization where supported. Regenerating the token invalidates previously generated protected URLs.

Local control API

The optional /api/v1 interface is disabled by default. It requires the admin Bearer token and accepts only loopback clients unless LAN access is explicitly enabled. Read endpoints expose status, sources, sessions, workflows, recording plans, recordings, and storage. Mutating endpoints can start a saved workflow or recording plan, stop a recording, close a source, kick a session, or run safe storage cleanup. Supply a unique Idempotency-Key header for retryable mutating requests.

5. Sources

Sources is the live registry of media currently known to the server. Pull relays, external publishers, RTP/GB28181 inputs, WebRTC inputs, shared file publications, and private VOD sessions are labeled separately.

Finding and inspecting a source

  1. Pull down to refresh, type an app/stream value in Search, or use the type filter.
  2. Open a source to view ingress type, online state, reader counts, total and live traffic, and available tracks.
  3. Inspect video codec, resolution, and frame rate or audio codec, sample rate, and channel count.
  4. Copy a generated output URL or select Preview for an in-app end-to-end check.

Source actions

The action shown depends on source ownership. You may stop a pull relay, RTP receiver, WHEP pull, GB28181 preview, shared file publication, or private VOD session; disconnect an external publisher; stop MP4 recording; or close a temporary source. Closing a source interrupts its readers and any dependent output.

A source can disappear because its publisher disconnected, a file reached EOF, an idle-close policy fired, the server stopped, or its owning task was explicitly stopped. Owned file sessions are reconciled by lifecycle events rather than a single transient registry miss.

6. Workbench

Workbench creates active ingest and output jobs. Start the server first. Running, reconnecting, failed, and stopped jobs appear under Active jobs, where an explicit stop also cancels automatic reconnect.

Saved workflows can restore when the server starts or after a device restart according to their recovery setting. The task page keeps recent run records including start, reconnect, stop, and failure outcomes.

Pull relay

Purpose: make a remote playback URL available as a local source.

  1. Enter a reachable RTSP, RTMP, HTTP, or other supported remote URL.
  2. Choose a unique local app and stream name.
  3. Optionally request HLS generation or MP4 recording.
  4. Create the job, then verify it in Sources and Active jobs.

The remote encoded tracks are relayed; incompatible codecs are not automatically converted.

Republish stream

Purpose: continuously send an online local source to another media server.

  1. Select a registered source.
  2. Enter the remote RTMP or RTSP publish URL.
  3. Create the republish job and monitor reconnect or failure state.

RTP receive

Purpose: accept an RTP sender that already knows the destination and payload agreement.

  1. Choose UDP, TCP passive, or TCP active mode.
  2. Enter a local port, or use 0 for automatic even-port allocation.
  3. Set an optional SSRC and multiplex behavior. TCP active mode also needs the remote host and port.
  4. Create the receiver and give the allocated address, transport, port, and SSRC to the sender.

RTP send

Purpose: send one local source as RTP to equipment or a platform that has provided a host, port, SSRC, and transport mode. Select the source, enter the agreed endpoint, and create the send job. RTP is not a discovery protocol; both ends must agree on session parameters.

SRT pull and push

Purpose: carry resilient low-latency MPEG-TS media across unreliable networks.

WebRTC WHIP and WHEP

Purpose: publish or pull low-latency media through standards-based HTTP(S) SDP signaling.

GB28181 surveillance access

Purpose: let compatible cameras, NVRs, or lower-level platforms register with the phone through SIP, expose their catalog, send live RTP, and accept PTZ commands.

  1. In Platform, configure the SIP port, bind address, 20-digit platform ID, 10-digit domain, digest realm, and registration password.
  2. Start the platform and configure the device with this phone's reachable address and matching credentials.
  3. In Devices, verify registration and refresh the catalog to load channels.
  4. In Live & PTZ, choose a device channel, start live RTP, then use directional or zoom controls. Send Stop after a movement command when required.
GB28181 is a surveillance integration, not a general-purpose player login. It does not automatically cross NAT, configure routers, or grant permission to view third-party cameras.

7. Library

Library has three tabs: Recording, Media files, and Delivery tasks.

Recording

  1. Select an online source.
  2. Choose MP4, FLV, HLS-TS, or fMP4 HLS when offered.
  3. Set the maximum segment duration and start recording.
  4. Use Stop recording from the active task. If the source disconnects, the app finalizes or marks the task interrupted and keeps recoverable output in the media library.

Recording plans

Recording plans run once, daily, or on selected weekdays in the device timezone. Choose the source, output format, start time, total duration, segment duration, and how long to wait for an offline source. The scheduler wakes the foreground media service only when a plan is due and releases a scheduler-owned server after the recording finishes. Use Run now to test a saved plan while the server is running. Recent execution records distinguish waiting, recording, completed, skipped, and failed outcomes.

Importing media files

Use the system file or folder picker. You can copy files into managed app storage for predictable availability, or retain a persistable system document grant when linking is supported. Import progress is stable while the list updates, and failed imports can be cleared. A linked file can become unavailable if the provider revokes access, the source is moved, or removable storage is detached.

Media information

Each file card can show origin, size, duration, video codec (for example H264 or H265), audio codec, resolution, and distribution status. Open Details when the summary is not sufficient.

Direct MP4 delivery

HTTP MP4 and HTTPS MP4 are direct file playback URLs. They do not create a live media source. Each client can seek independently. HTTPS playback fails when the client does not trust the configured certificate.

HLS VOD generation

Generate HLS when you need a playlist and segments suitable for HTTP-based playback. Wait until generation completes before testing the playlist. The generated HLS cache can later be deleted without deleting the source media file.

Publish as a shared stream

  1. Choose Publish MP4 and enter a unique stream ID.
  2. Select the publication mode. Looping live publication restarts at EOF; one-shot publication ends naturally.
  3. Choose whether no-reader timeout may automatically stop the publication.
  4. Use the Delivery tasks tab to copy all enabled protocol addresses, preview the source, or stop publication.

All viewers of a shared publication observe the same server timeline. Opening a new RTSP preview does not create a new file timeline.

Private RTSP VOD session

Create a private seekable RTSP session only when a client specifically needs RTSP VOD behavior with an independent start offset. It is separate from Publish MP4, appears as its own delivery task, and can be explicitly ended. Starting both creates two different server tasks; it does not change the shared publication.

Deleting and cleaning

Removing an imported managed file deletes the app's copy after confirmation. Removing a linked item removes the library reference, not the original external document. Storage cleanup never silently includes recordings or imported media in the safe temporary cleanup action.

8. Built-in playback verification

The player is a diagnostic client, not proof that every third-party device supports the same protocol and codec. It uses protocol-specific clients and can route supported streams through a reusable MPEG-TS bridge before handing them to Android Media3.

InputVerification approachCommon limitation
HTTP(S) MP4 and HLSMedia3 HTTP playback.TLS trust, incomplete HLS generation, or unsupported codec.
RTSPRTSP playback with resume behavior where the source supports it.A shared live file publication joins its current timeline; a private VOD session has independent seeking.
RTMP and HTTP(S)-FLVNative protocol input; H265 can use the common TS bridge instead of relying on FLV codec support in the player library.The Android decoder must still support the elementary video/audio codec.
RTMPS and RTSPSSecure protocol input can be normalized through the TS playback bridge.Certificate trust and client-side TLS compatibility.
WebRTC / WebRTCSNative WebRTC rendering and audio track playback.ICE path, codec negotiation, device decoder, or source timestamp quality.

If the app reports an unsupported decoder after protocol/container normalization, changing the container cannot fix the missing hardware codec. Try another source rendition or a compatible client. The current product does not bundle FFmpeg software decoding.

9. Monitor

Monitor refreshes at the interval selected in App settings while the page remains visible. Pull down for an immediate refresh.

Sessions

View protocol, remote endpoint, connection duration, live download/upload rates, total traffic, and WebRTC status where available. Disconnect ends the selected client session immediately; it does not necessarily stop the source publisher task that can reconnect.

Events

The event timeline records server lifecycle, media registration/unregistration, access, recording, and related runtime events. It is useful for correlating a client failure with what the server observed.

Rooms and DataChannel

10. My, settings, storage, and permissions

Mestrio Pro

The Mestrio Pro card shows the current entitlement, localized lifetime price, purchase state, and restore action. Core server and protocol features remain free. The optional one-time Pro purchase unlocks higher task capacity, saved workflows, recording schedules, extended history and export, profiles, storage automation, and advanced security controls. It does not renew automatically.

App settings

Storage

Review managed recordings, imported media, HLS VOD cache, server web cache, temporary app files, logs, TLS identities, linked files, and other data. Clean only the selected safe category and read the confirmation carefully.

Permissions

Interactive guide

Start, continue, or restart the guided overlay. Progress is saved by stable step ID. Skipping and completing are different states, and the guide never starts the server or performs media operations automatically.

Contact and About

Contact us opens an email draft and can include basic diagnostics only when you choose to send them. About shows the app version. Advanced native version details appear only after five consecutive taps on the version presentation.

11. Security checklist

12. Troubleshooting

A client cannot connect

  1. Confirm the server status is Running and the protocol listener has a non-zero port.
  2. Copy the address again using a host reachable from the client.
  3. Check Wi-Fi client isolation, VPN routing, Android power restrictions, router rules, and desktop firewall settings.
  4. For TLS, verify the secure port and client certificate trust.
  5. For protected endpoints, verify the current token and publish/playback scope.

The source exists but playback keeps loading

WebRTC is frozen, silent, or unstable

Verify H264 compatibility, audio-track negotiation, source timestamp continuity, signaling URL, ICE reachability, and device hardware decoding. Test the same source over RTSP or HLS to distinguish a source problem from a WebRTC transport problem. Repeated rendering crashes should be reported with app version, device model, Android version, source codec, and reproduction steps.

An imported file cannot be opened

A recent-provider URI can disappear when a document provider returns a temporary path or does not grant persistable access. Re-select the original file and choose copying into managed storage for reliable long-term use. Remove or clear failed import entries from the import queue.

A file publication stops by itself

Check whether the publication is one-shot, reached natural EOF, has no-reader automatic close enabled, lost its source file, or was stopped with the server. The Delivery tasks tab identifies the owning task and its final state.

Recording cannot be stopped after disconnect

The task should transition to interrupted or finalizing and keep recoverable output. Refresh the Recording tab and inspect the recent result. If a task remains stuck, stop the server once, preserve the file, and report the task state and event timeline.

Battery optimization stops background service

Keep the foreground notification enabled and allow background operation in the device vendor's battery settings. Some Android variants impose additional restrictions that the app cannot override.

13. Support

Email robinxdroid@gmail.com. Include the app version, Android version, device model, protocol, source codecs, whether TLS/access control is enabled, exact steps, and the visible error. Do not send media files, credentials, access tokens, certificate private keys, or protected URLs unless explicitly necessary and safe.

Author and provider: Robin Wang, publishing under the Mestrio brand.