Push a feed in, get adaptive renditions and a player-ready manifest out. We handle the encoders, the origin, the failover and the boring parts of delivery — you keep the product.
Three services that fit together, each usable on its own. No SDK lock-in — everything is reachable over plain HTTP or gRPC.
SRT, RTMP and WebRTC endpoints with per-key auth. Automatic reconnect windows, contribution redundancy across two regions, and a health feed you can graph.
Ladder presets from 240p to 2160p, per-title bitrate tuning, AV1 and H.264 side by side. Jobs are idempotent and resumable — retries never double-bill.
LL-HLS and DASH from a shielded origin, signed URLs, and a stream API for clients that want frames instead of files.
No dashboards you have to babysit. The control plane is an API; the console is a thin client on top of it. Every object — channel, ladder, key, manifest — has a stable ID and an audit trail.
# create a channel and start pushing curl -X POST https://waw-media.bulsan.site/v1/channels \ -H "Authorization: Bearer $WAW_TOKEN" \ -d '{"name":"studio-a","ladder":"web-1080p","region":"eu-waw"}' # → ingest URL, stream key and manifest base { "id": "ch_8f21c0d4", "ingest": "srt://ingest.eu-waw.waw-media.bulsan.site:9000", "manifest": "https://waw-media.bulsan.site/p/ch_8f21c0d4/index.m3u8", "state": "idle" }
When a manifest is the wrong shape — analytics pipelines, ML tagging, second-screen apps — subscribe to the frame stream directly over gRPC instead of polling segments.
// media/stream/v1/stream.proto service MediaStream { rpc Subscribe(SubscribeRequest) returns (stream Frame); rpc Ack(stream AckRequest) returns (AckSummary); }
Served on grpc-media-stream over HTTP/2 with per-token flow control. Backpressure is honoured: slow consumers get dropped keyframe-aligned, never mid-GOP.
Because half our customers already speak protobuf, and the other half want a stream that survives a proxy hop without a reconnect storm. gRPC gives us both, plus deadlines and typed errors for free. The full stream contract is in the docs.
Trial accounts include 500 GB of egress and two concurrent channels — enough to run a real pilot, not a toy.