open-standards/wai/examples/encoder-ingest/README.md
Transaction Science 632f8cf394 wai: the developer's path, hello, create, dev and verify, a floor build with no system library, and nine examples
wai-rs gains the feature floor (the mandatory floor of SPEC 5: PNG, FLAC and
zstd, decoded with no system codec library) and quickstart (the floor, and the
receipt checks hello and verify run). The wai command line gains four verbs,
one module each, named in one table (dx::VERBS):

- hello: name, dispatch, rebuild and receipt on a picture made here, the
  receipt laid out as http-delivery 8 lays receipts beside an object;
- create: a new project from one of the examples, whose files the binary
  holds; tests/cli_dx.rs holds them to wai/examples/ byte for byte;
- dev: the relay, the room service and the room page on one loopback origin,
  as a production front serves them; --check checks each piece through it;
- verify: the receipt indexes under a directory, checked offline.

The project file a template writes, wai.json, is read in one place
(dx/project.rs). wai/examples/ holds video-room, watch-together, messaging,
encoder-ingest, package-and-deliver, verify-receipts, apple-app, android-app
and remote-desktop, each with a README and a test that runs it through
wai create and wai dev. wai/quickstart/ builds the room client and the
archive that holds wai, the relay, the room service, the remote host and the
packager.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 22:58:39 -04:00

1.4 KiB

Stream from an encoder into a room

What it shows. An encoder's stream entering a room over SRT. The room's authority grants the encoder's key a publisher's place; an ingest gateway opens an SRT session for that grant once the encoder's side proves it holds the key, and publishes what arrives as the room's video and audio tracks. The gateway signs each group's receipt as the first hop; the relay checks every object against it at its door, and a subscriber checks each one again.

Run it.

wai create my-ingest --template encoder-ingest
cd my-ingest
cargo run --release

It prints an srt://127.0.0.1:… address. Point an SRT encoder at it (MPEG-TS with H.264 or HEVC video and AAC audio, caller mode, the stream ID and passphrase as given).

What you see. A line for the first groups of each track as they arrive, each verified against the receipt the gateway signed. cargo run --release -- --synthetic 5 sends five seconds of a synthetic program itself (shaped like H.264 and AAC, not watchable) and exits 0 once every group verified.

Make it yours. The gateway also takes RTMP and WHIP, and serves WHEP to players; its configuration file is gateway.example.toml in the repository's joule-moq-ingest crate. The first build fetches the repository and compiles the relay and the gateway.

With a coding assistant. Run wai setup-agent in this directory: it writes the instructions an assistant reads and connects it to WAI's tools.