diff --git a/.github/pages/README.md b/.github/pages/README.md index 3524d891..8f2c34d3 100644 --- a/.github/pages/README.md +++ b/.github/pages/README.md @@ -6,6 +6,7 @@ screenshots and captured reports there; the code branch links to the Large recordings and graph images are release assets: +- [Current mixer media](https://github.com/amagimedia/avplumber/releases/tag/mixer-demo-media-2026-10) - [Replay media](https://github.com/amagimedia/avplumber/releases/tag/replay-demo-media-2026-09) - [DMA-BUF media](https://github.com/amagimedia/avplumber/releases/tag/dmabuf-demo-media-2026-09) @@ -19,3 +20,9 @@ GPU correctness tests, capacity measurements and actual deployment state. Keep historical measurements attached to their workload and revision; a code review or small smoke test does not refresh a capacity benchmark. Publish sanitized textual evidence without private host or storage paths. + +The October mixer demo is a 10-second recording of the real main UI, with +Program/Preview and dirty Program viewers, four keys and direct cuts. Its +`capture-20261009.json` describes the observed 192-input L4 configuration; +it does not replace historical capacity or latency measurements. September +mixer graph images and recordings remain historical release assets. diff --git a/demos/mixer/README.md b/demos/mixer/README.md index 14e17dba..2962fd08 100644 --- a/demos/mixer/README.md +++ b/demos/mixer/README.md @@ -3,10 +3,20 @@ Mix video and browser sources on a CUDA canvas, with Preview/Program, Cut/Fade/media wipes, downstream keys and AUX monitors. Video only. -[Watch the demo](https://amagimedia.github.io/avplumber/demos/mixer/docs/) · +[![192-input mixer: Program/Preview and dirty Program with four downstream keys](https://amagimedia.github.io/avplumber/demos/mixer/docs/mixer-demo-poster.jpg)](https://amagimedia.github.io/avplumber/demos/mixer/docs/) + +[Watch the 10-second demo](https://amagimedia.github.io/avplumber/demos/mixer/docs/) · +[MP4](https://github.com/amagimedia/avplumber/releases/download/mixer-demo-media-2026-10/mixer-192-input-demo.mp4) · [HTML cookbook](https://amagimedia.github.io/avplumber/demos/mixer/docs/cookbook/) · [Configuration](docs/config.md) · [Run manually](docs/guide.md) +Recorded 2026-10-09 from the real two-viewer interface on an NVIDIA L4: +192 inputs (120 NVDEC, 36 browser scene sources, 32 raw NV12 and four browser +keys), 256 scenes and 26 encoded outputs at 1920×1080p25 SDR. It shows direct +cuts with all four keys enabled. Setup counts the 188 scene sources separately +from the keys. This short recording demonstrates the interface; see +[capacity measurements](docs/capacity.md) for qualification scope. + ## Run Use a Linux NVIDIA host with NVDEC/NVENC, Docker Compose, NVIDIA Container diff --git a/demos/mixer/docs/capacity.md b/demos/mixer/docs/capacity.md index f626d6fe..517da878 100644 --- a/demos/mixer/docs/capacity.md +++ b/demos/mixer/docs/capacity.md @@ -8,6 +8,21 @@ runs; raw evidence and caveats remain linked below. [Source-limit cookbook](https://amagimedia.github.io/avplumber/demos/mixer/docs/cookbook/source-limits.html) · [HTML cookbook](https://amagimedia.github.io/avplumber/demos/mixer/docs/cookbook/) +## Current demo recording: 2026-10-09 + +The [10-second UI recording](https://amagimedia.github.io/avplumber/demos/mixer/docs/) +shows a running `nvidia_l4_cuarray` show on one NVIDIA L4 / 16-vCPU host: +192 inputs, 256 scenes and 26 outputs at 1920×1080p25 SDR. The input total is +120 NVDEC + 36 browser scene sources + 32 raw NV12 + four browser keys; +Setup reports 188 catalogue sources before adding the keys. Outputs are +Program, clean Program and 24 AUX buses, including the Program/Preview monitor +and source multiviewer. + +The capture uses two WebRTC viewers, four enabled keys and direct cuts through +several scene types. It is an interface demonstration, not a new capacity, +latency or soak benchmark. The [capture metadata](https://amagimedia.github.io/avplumber/demos/mixer/docs/capture-20261009.json) +records its scope; the historical qualification results below remain separate. + ## T4 16 GiB T4, 16 vCPUs, 1080p inputs; totals include four browser keys. diff --git a/demos/mixer/docs/guide.md b/demos/mixer/docs/guide.md index 965d41c2..9e9e0162 100644 --- a/demos/mixer/docs/guide.md +++ b/demos/mixer/docs/guide.md @@ -40,6 +40,19 @@ The Compose stack starts the web UI. With a standalone backend: python3 -m pyplumber.mixer.gui --host 127.0.0.1 --port 7777 --http-port 7681 ``` +For the [recorded two-viewer layout](https://amagimedia.github.io/avplumber/demos/mixer/docs/), +select **Viewers 2**, then **Program preview** in one viewer and **Program dirty** +in the other. The first contains PVW, PGM and eight scene slots; the second +shows the program with its enabled keys. Viewer selection is local to the +browser. Scene takes, key buttons, AUX paging and AUX layout controls operate +the running mixer. In Direct mode, selecting a scene takes it immediately +using the selected transition; select Cut for the cut-only workflow. + +Each viewer must support its output codec. The recorded L4 show uses HEVC for +Program preview and H.264 for dirty Program; an H.264-capable browser alone +cannot display both. Setup can change output codecs, but applying Setup +restarts the mixer. The downloadable demonstration MP4 is H.264. + For the optional terminal UI: ```sh @@ -81,7 +94,8 @@ Fedora image); the manual mixer needs no neural models. ## Behind a reverse proxy Serve controls at `/` and the preview server at `/preview/`, stripping that -prefix. Set `MIXER_PREVIEW_BASE=/preview/` (or `webui.py --preview-base /preview/`). +prefix. Set `MIXER_PREVIEW_BASE=/preview/` (or pass `--preview-base /preview/` +to `python3 -m pyplumber.mixer.gui`). Forward WebSocket upgrades for the preview's Janus path as well as normal HTTP. The [L4 proxy template](../../../docker-compose/mixer/deploy/l4/nginx.conf.template) is a complete example. WebRTC also needs the configured UDP range reachable from the viewer. diff --git a/docker-compose/mixer/deploy/l4/README.md b/docker-compose/mixer/deploy/l4/README.md index 37b5e076..1f19e370 100644 --- a/docker-compose/mixer/deploy/l4/README.md +++ b/docker-compose/mixer/deploy/l4/README.md @@ -1,6 +1,6 @@ # Portable L4 mixer -[Quick start](../../../../demos/mixer/README.md) · [Capacity](../../../../demos/mixer/docs/capacity.md#nvidia-l4-nvidia_l4) · +[Quick start](../../../../demos/mixer/README.md) · [Capacity](../../../../demos/mixer/docs/capacity.md#nvidia-l4-linear-and-cuarray-profiles) · [HTML cookbook](https://amagimedia.github.io/avplumber/demos/mixer/docs/cookbook/) Requires a Linux L4 host with working NVIDIA DRM/GBM/EGL, R615+ driver, @@ -24,6 +24,12 @@ Allow the public proxy port and `JANUS_RTP_PORT_RANGE` (UDP 20000–20100 by default). Set `MIXER_HTPASSWD` or use an authenticated reverse proxy. The included proxy forwards HTTP and WebSocket paths. +The [current demo recording](https://amagimedia.github.io/avplumber/demos/mixer/docs/) +shows this profile at 192 inputs / 256 scenes / 26 outputs, 1080p25 SDR. +Its two viewers show Program/Preview and dirty Program with four keys. The +Program/Preview and Multiviewer outputs in that show use HEVC; use a browser +with HEVC WebRTC reception support to view them. The recording itself is H.264. + First start seeds [settings.json](settings.json) and generates media. Later starts preserve saved settings; change an existing show through Setup. Keep the writable media directory, including `.nv-cache`, across restarts.