Audiopus

High-level, safe Rust binding to the Opus audio codec, wrapping the low-level audiopus_sys FFI layer.

Library
Cargo
v0.3.0-rc.0
56stars
ISC

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
33/100Needs Attention
Development Activity0
Maintenance20
Community40
Maturity60
Momentum12

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
69/100Good
Architecture76
Code Quality70
Innovation66
Learning Curve64

Audiopus is a high-level Rust binding to version 1.3 of the Opus audio codec, built on top of the low-level audiopus_sys FFI crate. It provides ergonomic, safe wrappers for Opus encoders and decoders so Rust applications can compress and decompress audio without writing unsafe FFI code. Originally created to power audio features in the Serenity Discord library, it supports static and dynamic linking across Windows, Linux, and macOS.

What You Get

  • Safe, high-level Rust wrappers over Opus encoder and decoder APIs
  • A pre-built FFI binding via the audiopus_sys companion crate
  • Flexible static or dynamic linking with optional pkg-config probing
  • Cross-platform support for Windows, Linux, and macOS

Common Use Cases

  • Encoding microphone audio to Opus for low-latency voice transmission
  • Decoding received Opus frames back to PCM for playback
  • Adding voice features to Rust chat or game applications

Under The Hood

Architecture

Audiopus layers safe Rust abstractions over the raw audiopus_sys FFI crate. Encoder and decoder structs own the underlying Opus C handles, translate Rust enums (bitrate, application mode, channels) into the codec’s integer constants, and convert Opus error codes into Rust Results, keeping all unsafe pointer handling internal.

Tech Stack

Rust binding crate depending on audiopus_sys, which links against Opus 1.3. Build behavior is controlled by Cargo features (static, dynamic) and environment variables (LIBOPUS_STATIC, OPUS_LIB_DIR), with cmake and pkg-config used to build or locate Opus. Published on crates.io as audiopus, licensed ISC.

Code Quality

The crate is small and focused with a CHANGELOG and contributing guide, but it has limited automated tests and its latest published version is a release candidate (0.3.0-rc.0). Much of its robustness comes from the maturity of the underlying Opus library it wraps.

API Design

The public API mirrors Opus’s encoder and decoder model in idiomatic Rust, so developers familiar with audio codecs can adopt it quickly. The main friction is build-time: configuring linking and native Opus availability across platforms takes more setup than a pure-Rust crate.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search