Skip to content

Flex Video

Flex Video is a video streaming system built on GStreamer that provides real-time video transcoding, streaming, and distribution capabilities.

Features

  • Video Transcoding


    Transcode video streams between H.264, H.265, and AV1 codecs with configurable bitrate, resolution, and quality settings.

  • Camera Support


    Automatic detection and configuration of V4L2 cameras with hot-plug monitoring and capability enumeration.

  • Stream Announcements


    Auto-announce video feeds to CoT/ATAK, TAK Server, Lattice, and mDNS for seamless integration with tactical systems.

  • Framegrab Capture


    Capture periodic AVIF still images or motion sequences from video streams for archival or review.

  • Multi-Camera Composition


    Compose 1-4 video sources into a single output stream with per-input transforms, crops, and overlays in automatic grid layouts.

  • Audio Encoding


    Optional Codec2 voice audio encoding with noise filtering, noise suppression, and automatic gain control for tactical communications.

Quick Start

Get Flex Video running in minutes:

  1. Visit flex.blackwire-ts.com and authenticate (MFA required)
  2. Click the download link in the upper right of the page
  3. Transfer the installer to your target device via SSH, USB, or other method
  4. Run the installer:
chmod +x flex-video-installer-*.sh
sudo ./flex-video-installer-*.sh
  1. Access the web interface at https://:8443

Self-Signed Certificate

The installer generates a self-signed TLS certificate. Your browser will show a certificate warning on first visit -- this is expected. Accept the warning to proceed.

Encoder IP

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

Web Browser Required

The download portal is protected by Cloudflare Access. Downloads must be performed through a web browser—CLI tools like curl will not work.

Architecture Overview

Flex Video consists of these containers:

Container Purpose Ports
flex-av1 GStreamer video processing engine 8731 (RTSP)
flex-mtx MediaMTX RTSP/RTMP server 8554 (RTSP), 1935 (RTMP)
flex-manager-web Web UI (HTTPS) 8443 (HTTPS), 8080 (HTTP redirect)
flex-api REST API (HTTPS) 3539 (HTTPS)
flex-docs Documentation (this site) 38082
flex-swagger Interactive API reference (Swagger UI) 38081

Optional Container

The flex-swagger container is optional and included in some installer configurations. If installed, access the interactive API reference at http://<encoder-ip>:38081.

HTTPS

The web UI and REST API are served over HTTPS using a self-signed certificate generated during installation. Your browser will show a certificate warning on first visit -- this is expected.

graph LR
  subgraph Web UI
    A["flex-manager-web<br/>:8443 HTTPS"]
  end
  subgraph REST API
    B["flex-api<br/>:3539 HTTPS"]
  end
  subgraph Ingest Server
    C["flex-mtx<br/>:8554 RTSP<br/>:1935 RTMP"]
  end
  subgraph Video Engine
    D["flex-av1<br/>Decode → Encode<br/>:8731 RTSP Out"]
  end
  A -- "reverse proxy" --> B
  B -- "control" --> D
  C -- "stream in" --> D

The web UI (port 8443) includes a reverse proxy to the REST API, so browser users only need to accept one certificate.

Next Steps