Live streaming and video platform development
RTMP and SRT ingest, real-time transcoding, HLS delivery and the billing around them. We built and run zap.stream, a live streaming platform with Lightning payments.
zap.stream runs on zap-stream-core, a Rust server we wrote that takes RTMP or SRT, transcodes with FFmpeg into several renditions, segments to HLS and serves the result. It is packaged with Docker Compose so other operators run their own copies, and those servers can register with zap.stream as ingest points.
We call FFmpeg through our own Rust bindings, ffmpeg-rs-raw, rather than shelling out to the command line, which keeps memory, latency and error handling under our control. The same bindings power Route96, which stores uploads by hash, compresses images and video, makes thumbnails and blurhashes, and answers range requests for playback.
Video turns up elsewhere in our work too: camwall puts a Frigate NVR's cameras on a Raspberry Pi screen, and WaveShark decodes television off a DVB-T multiplex.
Ingest
RTMP and SRT ingest with per-user stream keys.
Transcoding
Real-time FFmpeg transcoding into several renditions, through direct bindings.
Delivery
HLS segmenting and serving, ready to put behind a CDN.
Monetisation
Per-minute billing from prepaid balances, Lightning tips and zaps.
Uploaded media
Video and image compression, thumbnails, metadata extraction and range requests.
Self-hosting
Docker Compose deploys with an admin UI and Cloudflare tunnel support.
- Can you build a streaming backend into our product?
- Yes. We can build ingest, transcoding and HLS delivery around your own accounts and billing, reusing what we built for zap.stream where it fits.
- Do you work with recorded video as well as live?
- Yes. Route96 processes uploaded video: compression, thumbnails, metadata extraction and range requests for playback.
- Can we run it on our own servers?
- Yes. zap-stream-core is designed to be self-hosted with Docker Compose, with or without a public IP.