#web-rtc #rtsp #ffmpeg #media #streaming

icey

icey: a C++ WebRTC/FFmpeg/networking media runtime. Rust bindings in development.

3 unstable releases

0.1.1 May 17, 2026
0.1.0 May 17, 2026
0.0.0 May 15, 2026

#292 in Video

LGPL-2.1-or-later

19KB
316 lines

icey

Rust bindings for icey, a C++ media runtime: WebRTC, FFmpeg, and async networking in one toolkit. No Google monolith. No dependency hell. No fighting three build systems to get a frame on screen.

The Rust surface is in early development. The first public API is a narrow RTSP-to-WebRTC pipeline wrapper over the graft C ABI.

Crate Layout

Most Rust users should depend on this crate. It wraps the raw C ABI exposed by icey-sys, keeps unsafe calls behind a small Rust API, and owns the public examples.

The companion icey-sys crate is published separately because it owns native link metadata and generated FFI bindings. Keep it as an implementation layer unless you need direct access to the graft function table.

Build icey's native pipeline_capi target, then point Cargo at the produced library directory:

cmake --build build-pipeline-api --target pipeline_capi -j 4
ICEY_LIB_DIR=/path/to/libdir cargo test -p icey

On macOS, set DYLD_LIBRARY_PATH to the same directory when running examples or tests that load libicy_pipeline_capi.dylib.

Example

ICEY_LIB_DIR=/path/to/libdir \
DYLD_LIBRARY_PATH=/path/to/libdir \
cargo run -p icey --example rtsp_to_browser -- \
  rtsp://127.0.0.1:8554/demo ws://127.0.0.1:4500 icey-rust

Resources

License

LGPL-2.1-or-later, matching the parent project.

Dependencies

~0–2MB
~40K SLoC