Livestreaming video and audio over iroh
Status: experimental / work in progress
This repository implements a live streaming protocol over iroh with Media over Quic. It uses moq-rs to transfer audio and video streams over iroh connections.
web-transport-rs: Implements the web-transport traits for iroh connectionsiroh-moq: Adapters to create and accept moq-lite sessions over irohiroh-live: Native capture, encoding and decoding of audio and video. This is an early preview of a high-level live streaming toolkit for iroh. Currently, it has these features, all subject to change:- Support for hang catalogs in MoQ sessions
- Capture and playout audio (with firewheel)
- Capture camera (with nokwha)
- Capture screens (with xcap)
- Encode and decode video (h264) and audio (Opus) using ffmpeg. Video encoding is hardware accelerated on supported platforms.
- Support multiple renditions and on-demand switching of the encoding
There's still bugs and a lot of missing optimizations. This is an early, work-in-progress preview!
Check out the rooms example:
cargo run --release --example rooms
This will print a room ticket. Copy this to another device, and run:
cargo run --release --example rooms -- <TICKET>
Now you're chatting! With video and audio! Over iroh!
There's also a publish example (publish only, no GUI), and a watch example (watch a stream from the publish example).
The examples use egui, however iroh-live is not coupled to any GUI framework and should work with anything that can render raw images to the screen.
Copyright 2025 N0, INC.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.