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:
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¶
- Click the Add Pipeline button
- Select the pipeline type:
- Simple Pipeline: Guided form with source, encoding, and output options
- Multiview Pipeline: Compose 1-4 video sources into one output stream
- Advanced Pipeline: Direct GStreamer pipeline string entry
- Configure your pipeline settings
- 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:
- Enter your GStreamer pipeline string
- Configure optional geolocation and metadata
- 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¶
- Click the Edit button on any pipeline card
- Modify the pipeline configuration
- 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:
- Click the Delete button
- Confirm the deletion in the dialog
- 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¶
- Enter your password on the login screen
- Click Login
- Session tokens are valid for 24 hours
Setting a Password¶
If no password is set:
- Go to Settings > Security
- Enter a new password (minimum 12 characters)
- Click Set Password
Changing Password¶
- Go to Settings > Security
- Enter your new password
- Click Update Password
Troubleshooting¶
Interface Won't Load¶
- Check that containers are running:
docker ps - Check web UI logs:
docker logs flex-manager-web - Check API logs:
docker logs flex-api - 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:
- Open
https://<encoder-ip>:3539in a new browser tab - Accept the certificate warning
- You should see
OKfrom the health check - Return to the web interface at
https://<encoder-ip>:8443and 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¶
- Check the pipeline status for error messages
- Verify the source URI is accessible
- 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.