See the demo comparison to choose a demo. All commands below run from the repository root. The Python video runtime below builds from public sources; no company account, private image, or separately installed CUDA toolkit is needed.
Start with Playlist: its Docker image includes generated clips, and its UI-only preview works without a GPU.
Use a Linux x86-64 host with Docker, Docker Compose, an NVIDIA driver, and the NVIDIA Container Toolkit. Follow that guide to enable Docker GPU access, then check:
nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu22.04 nvidia-smiThe CUDA demo images compile for compute capability 7.0 or newer.
Playback and streaming also need hardware decode and H.264 NVENC support;
having CUDA alone is insufficient. Browser capture additionally requires the
NVIDIA graphics driver libraries and /dev/dri, not a compute-only driver.
See each demo's requirements for details.
git clone --depth 1 --recurse-submodules --shallow-submodules \
https://github.com/amagimedia/avplumber
cd avplumberFor an existing checkout, run git submodule update --init --recursive.
The Docker commands use :z on media mounts so they also work with SELinux
enabled, as on Fedora. Mount only the demo's media directory.
The mixer image builds avplumber, its Python module, and patched FFmpeg together. Playlist and Replay can reuse this image:
docker build -f docker-compose/mixer/Dockerfile.fedora44 -t avplumber-mixer:local .This is the image the mixer's Compose file builds under the same tag: Fedora 44
with CUDA 13.4, which needs host driver R615 or newer. For an older driver build
docker-compose/mixer/Dockerfile (Ubuntu 22.04 / CUDA 11.7) instead; the
mixer guide compares the two.
Then follow Mixer, Playlist, or Replay for commands and controls. The first build compiles FFmpeg and avplumber; subsequent builds reuse Docker's cache. These demos do not require neural models or TensorRT.
Playlist and Replay require Janus; Mixer can also write directly to a file or stream. Start the public Janus and preview services using the shared DMA-BUF service definitions:
docker compose -f docker-compose/dmabuf/compose.yaml up -d --build janus janus-previewOpen http://127.0.0.1:8080 after starting a player. The included video-only mountpoint accepts the demos' default RTP/RTCP ports, 5004/5005. Run one demo output at a time on those ports.
For a remote host, prefix the Compose command with JANUS_HOST_IP=<host> using
the host address reachable by your browser, then open http://<host>:8080.
Allow the preview and Janus HTTP ports (8080, 8088) and WebRTC UDP ports
20000–20100 through the host firewall.
Stop the preview services with:
docker compose -f docker-compose/dmabuf/compose.yaml down- Playlist UI preview: try the controls without video or GPU setup.
- Browser capture and overlays: shared services and mixer base API; use the mixer demo to run them.