A collection of VoIP audio codecs implemented in or wrapped for Rust. This crate provides a unified interface for encoding and decoding various audio formats commonly used in SIP, VoIP, and WebRTC applications.
| Codec | Implementation | Feature |
|---|---|---|
| G.711 (PCMA/PCMU) | Pure Rust | Built-in |
| G.722 | Pure Rust | Built-in |
| G.729 | Wrapper (g729-sys) |
Built-in |
| Opus | Wrapper (opusic-sys) |
opus (default) |
| Telephone Event | RFC 4733 | Built-in |
- Unified API: Simple
EncoderandDecodertraits for all codecs. - Resampler: Built-in audio resampling utility.
- Lightweight: Minimal dependencies for core codecs.
Add this to your Cargo.toml:
[dependencies]
audio-codec = "0.3"use audio_codec::{create_decoder, CodecType};
fn main() {
let mut decoder = create_decoder(CodecType::PCMA);
let encoded_data: Vec<u8> = vec![/* ... */];
let pcm_samples = decoder.decode(&encoded_data);
println!("Decoded {} samples", pcm_samples.len());
}use audio_codec::g722::G722Encoder;
use audio_codec::Encoder;
fn main() {
let mut encoder = G722Encoder::new();
let pcm_samples: Vec<i16> = vec![0; 320]; // 16kHz mono
let encoded_data = encoder.encode(&pcm_samples);
println!("Encoded into {} bytes", encoded_data.len());
}This project is licensed under the MIT License.