Skip to content

Web Interface

The Flex Video web interface provides a visual way to manage pipelines, monitor streams, and configure settings.

Accessing the Interface

Open your browser to:

https://<encoder-ip>:8443

Replace <encoder-ip> with your encoder's IP address.

Self-Signed Certificate

Flex Video uses a self-signed TLS certificate. Your browser will show a certificate warning on first visit -- this is expected. Accept the warning to proceed.

Pipeline List

The main page displays all pipelines with their current status:

  • Playing pipelines: Sorted first, showing active streams
  • Saved pipelines: Stored configurations ready to start
  • On-demand pipelines: Created by triggers, cannot be deleted

Each pipeline card shows:

  • Mode icon: Grid icon for Simple, multi-view icon for Multiview, code icon for Advanced
  • Name/ID: Pipeline description (if set) or ID
  • Status chip: Playing, Ready, Stopped, or Error with source indicator
  • Input/Output URLs: Selectable text for easy copying
  • Action buttons: Start, Stop, Edit, Delete (for saved pipelines only)

Creating a Pipeline

  1. Click the Add Pipeline button
  2. Select the pipeline type:
  3. Simple Pipeline: Guided form with source, encoding, and output options
  4. Multiview Pipeline: Compose 1-4 video sources into one output stream
  5. Advanced Pipeline: Direct GStreamer pipeline string entry
  6. Configure your pipeline settings
  7. Click Start Pipeline to create and start

Simple Mode

Simple mode provides a guided interface for common use cases:

Section Fields
Input Source URI, Camera selection
Encoding Codec, Bitrate, Resolution, FPS, Quality
Output Output URI, MTU, Multicast options
Features Framegrab, KLV metadata, Audio encoding
Announcements Geolocation, Metadata tags
Save Options Save pipeline, Auto-start on boot

Multiview Mode

Multiview mode composes multiple video sources into a single output:

Section Fields
Inputs 1-4 video sources, each with camera picker, label, transform, crop, overlay
Encoding Bitrate, Resolution, FPS (AV1 codec, fixed)
Output Output URI, MTU
Features Framegrab, Global overlay
Announcements Geolocation, Metadata tags
Save Options Save pipeline, Auto-start on boot

Use the Add Input button to add up to 4 sources. Each input can be independently configured with rotation, mirroring, grayscale, cropping, and text overlays. The layout is computed automatically based on input count.

Camera Selection

Each input has a camera picker button next to the Source URL field. Click it to select from connected V4L2 cameras:

  • Cameras already assigned to another input in the same pipeline are shown as (in use) and cannot be selected
  • If a selected camera is physically disconnected, a warning banner appears on that input
  • The camera list refreshes automatically when cameras are plugged in or unplugged (hot-plug detection)

You can also type a source URL directly (RTSP, UDP, file, or test pattern) instead of selecting a camera.

Advanced Mode

Advanced mode allows direct GStreamer pipeline strings:

  1. Enter your GStreamer pipeline string
  2. Configure optional geolocation and metadata
  3. Click Start Pipeline

Advanced Mode

Advanced mode requires GStreamer knowledge. Invalid pipelines will fail to start.

Pipeline Management

Starting and Stopping

  • Click the Play button to start a stopped pipeline
  • Click the Stop button to stop a running pipeline
  • Status updates automatically via real-time events

Editing Pipelines

  1. Click the Edit button on any pipeline card
  2. Modify the pipeline configuration
  3. Click Start Pipeline to apply changes

The mode (Simple/Multiview/Advanced) is determined by the original pipeline configuration and cannot be changed when editing.

Deleting Pipelines

Only saved pipelines (created with "Save Pipeline" enabled) can be deleted:

  1. Click the Delete button
  2. Confirm the deletion in the dialog
  3. The pipeline is stopped (if running) and removed from storage

On-demand pipelines (created by triggers) cannot be deleted, only stopped.

Real-time Status

Pipeline status updates automatically via Server-Sent Events (SSE). No refresh needed.

Status indicators show how the pipeline was started:

  • Playing (Web): Started via the web interface
  • Playing (API): Started via direct API call
  • Playing (Trigger): Started by MediaMTX ingress trigger
  • Playing (Auto): Auto-started on container boot

Settings

Access settings via the gear icon in the navigation bar.

CoT/ATAK Settings

Configure Cursor on Target multicast announcements for ATAK and WinTAK clients on your local network.

Setting Description
Enable CoT Toggle multicast announcements on/off

CoT is enabled by default and requires no additional configuration. For details on customizing CoT markers with metadata, see CoT/ATAK Announcements.

TAK Server Settings

Configure TAK Server integration for enterprise video distribution across subnets and the internet.

Setting Required Description
Server URL Yes TAK Server URL with port (e.g., https://takserver.example.com:8443)
Client Certificate Yes Upload your .p12 certificate file
Certificate Password Yes Password for the certificate
CA Truststore No Upload if using a private CA
Truststore Password No Password for the truststore
Public IP No Override auto-detected IP for RTSP URLs (required if behind NAT)

For details on obtaining certificates and customizing TAK Server metadata, see TAK Server Integration.

Lattice Settings

Configure Lattice integration for cloud-based situational awareness.

Setting Required Description
Lattice Host Yes Hostname without https:// (e.g., lattice.example.com)
API Token Yes Environment-level API token
Sandbox Token No Account-level token for sandbox environments
Public IP No Override auto-detected IP for RTSP URLs (required if behind NAT)

For details on Lattice metadata options (disposition, environment, nationality, modality, MIL-STD-2525 symbols), see Lattice Integration.

Authentication

If authentication is enabled:

Login

  1. Enter your password on the login screen
  2. Click Login
  3. Session tokens are valid for 24 hours

Setting a Password

If no password is set:

  1. Go to Settings > Security
  2. Enter a new password (minimum 12 characters)
  3. Click Set Password

Changing Password

  1. Go to Settings > Security
  2. Enter your new password
  3. Click Update Password

Troubleshooting

Interface Won't Load

  1. Check that containers are running: docker ps
  2. Check web UI logs: docker logs flex-manager-web
  3. Check API logs: docker logs flex-api
  4. Verify port 8443 is accessible

Blank Page or Infinite Loading Spinner

If the web interface loads but shows a blank page or never finishes loading, your browser may be blocking API requests due to the self-signed certificate.

The web UI communicates with the REST API through a built-in reverse proxy, so most browsers work without extra steps. However, some browsers (notably Firefox) may still require you to accept the API certificate separately:

  1. Open https://<encoder-ip>:3539 in a new browser tab
  2. Accept the certificate warning
  3. You should see OK from the health check
  4. Return to the web interface at https://<encoder-ip>:8443 and refresh

Why does this happen?

Firefox treats each host:port combination as a separate security origin for certificate trust. Even though the web UI proxies API requests internally, some browsers require explicit certificate approval for every origin before allowing connections.

Pipeline Won't Start

  1. Check the pipeline status for error messages
  2. Verify the source URI is accessible
  3. Check license status for codec availability

No Video Preview

The web interface does not include video preview. Use an external player or TAK to view streams. See Receiving & Playback for player setup instructions.