diff --git a/CHANGELOG.md b/CHANGELOG.md index 94d92b6..e3472ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,15 @@ - Added mxl-avsync (now released) and more complementary projects (MXL docs and awesome-mxl, EASY MXL, mxl-k8s, BCP-007-03). - States that this is an independent community project. -- The Compose examples are unchanged (same pinned images as 0.2.0). +- Compose examples: current releases. mxl-test-player 1.3.1, mxl-scopes 1.2.1, + mxl-audio-mixer 1.6.0, mxl-replay 1.8.7, mxl-browser-source 1.4.0, + mxl-srt-gateway 1.5.1, mxl-fabrics-agent 1.7.4 (the others are unchanged). + The single-host set was run together on one host with an NVIDIA GPU, every + function routed over IS-05. The two-host example passes `docker compose + config` only. +- Single host: the replay could not open its database, because its image runs + as uid 1000 and the named volumes for `/config` and `/data/replay` were + owned by root. `volume-owner` now hands them to uid 1000 as well. ## 0.2.0 - 2026-10-24 diff --git a/README.md b/README.md index 2ea106b..100e058 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,15 @@ flowchart LR - Browser previews are low-rate H.264 published to MediaMTX and played over WebRTC (WHEP). +

+ mxl-multiviewer web UI: a 3x3 multiviewer of MXL flows + FlowXer vision mixer web UI + mxl-audio-mixer console +

+ +The single-host example running: multiviewer, FlowXer vision mixer and audio +mixer. Every function README has a screenshot of its web UI. + ## What you can build Examples of chains made from these functions. Each arrow is an IS-05 diff --git a/compose/multi-host-rdma/fabrics-agent.yaml b/compose/multi-host-rdma/fabrics-agent.yaml index db23aad..f1ce407 100644 --- a/compose/multi-host-rdma/fabrics-agent.yaml +++ b/compose/multi-host-rdma/fabrics-agent.yaml @@ -3,7 +3,7 @@ # when a local NMOS receiver is connected (IS-05) to a flow of the other host. services: fabrics-agent: - image: ghcr.io/leeo86/mxl-fabrics-agent:1.7.3 + image: ghcr.io/leeo86/mxl-fabrics-agent:1.7.4 network_mode: host # RDMA and the fabric addresses need the host network pid: host # mirror cleanup checks /proc//maps of every reader cap_add: diff --git a/compose/multi-host-rdma/host-a/compose.yaml b/compose/multi-host-rdma/host-a/compose.yaml index 42b187a..f1b64b8 100644 --- a/compose/multi-host-rdma/host-a/compose.yaml +++ b/compose/multi-host-rdma/host-a/compose.yaml @@ -48,7 +48,7 @@ services: restart: unless-stopped test-player: - image: ghcr.io/leeo86/mxl-test-player:1.2.4 + image: ghcr.io/leeo86/mxl-test-player:1.3.1 network_mode: host user: "1000:1000" depends_on: [registry] diff --git a/compose/single-host/compose.yaml b/compose/single-host/compose.yaml index d9b5124..5060ba7 100644 --- a/compose/single-host/compose.yaml +++ b/compose/single-host/compose.yaml @@ -89,7 +89,7 @@ services: restart: unless-stopped test-player: - image: ghcr.io/leeo86/mxl-test-player:1.2.4 + image: ghcr.io/leeo86/mxl-test-player:1.3.1 network_mode: host user: "1000:1000" depends_on: [registry] @@ -137,7 +137,7 @@ services: restart: unless-stopped scopes: - image: ghcr.io/leeo86/mxl-scopes:1.1.0 + image: ghcr.io/leeo86/mxl-scopes:1.2.1 network_mode: host user: "1000:1000" depends_on: [registry, mediamtx] @@ -157,7 +157,7 @@ services: restart: unless-stopped audio-mixer: - image: ghcr.io/leeo86/mxl-audio-mixer:1.4.3 + image: ghcr.io/leeo86/mxl-audio-mixer:1.6.0 network_mode: host user: "1000:1000" depends_on: [registry, mediamtx] @@ -182,9 +182,15 @@ services: restart: unless-stopped replay: - image: ghcr.io/leeo86/mxl-replay:1.8.1 + image: ghcr.io/leeo86/mxl-replay:1.8.7 network_mode: host - depends_on: [registry, mediamtx] + depends_on: + registry: + condition: service_started + mediamtx: + condition: service_started + volume-owner: # the image runs as uid 1000 and has no /config or /data + condition: service_completed_successfully environment: <<: [*nmos, *preview] NMOS_SEED: ${STACK_ID:-stack}-replay @@ -210,7 +216,7 @@ services: restart: unless-stopped browser-source: - image: ghcr.io/leeo86/mxl-browser-source:1.3.3 + image: ghcr.io/leeo86/mxl-browser-source:1.4.0 network_mode: host user: "1000:1000" depends_on: [registry] @@ -237,9 +243,11 @@ services: volume-owner: image: ghcr.io/leeo86/mxl-webrtc-monitor:1.4.2 user: "0:0" - entrypoint: ["chown", "1000:1000", "/v/monitor-config", "/v/flowxer-storage", "/v/flowxer-config"] + entrypoint: ["chown", "1000:1000", "/v/monitor-config", "/v/flowxer-storage", "/v/flowxer-config", "/v/replay-data", "/v/replay-config"] volumes: - monitor-config:/v/monitor-config + - replay-data:/v/replay-data + - replay-config:/v/replay-config - flowxer-storage:/v/flowxer-storage - flowxer-config:/v/flowxer-config @@ -344,7 +352,7 @@ services: srt-gateway: profiles: [extras] - image: ghcr.io/leeo86/mxl-srt-gateway:1.4.4 + image: ghcr.io/leeo86/mxl-srt-gateway:1.5.1 network_mode: host depends_on: [registry] environment: diff --git a/docs/images/audio-mixer.png b/docs/images/audio-mixer.png new file mode 100644 index 0000000..7429e1a Binary files /dev/null and b/docs/images/audio-mixer.png differ diff --git a/docs/images/flowxer.png b/docs/images/flowxer.png new file mode 100644 index 0000000..3f82181 Binary files /dev/null and b/docs/images/flowxer.png differ diff --git a/docs/images/multiviewer.png b/docs/images/multiviewer.png new file mode 100644 index 0000000..ac6f622 Binary files /dev/null and b/docs/images/multiviewer.png differ