Skip to main content

Crate rtp_engine

Crate rtp_engine 

Source
Expand description

§rtp-engine

A pure Rust RTP media engine for VoIP applications.

This crate provides the building blocks for real-time audio communication:

  • Codecs: G.711 (μ-law/A-law) and Opus encoding/decoding
  • RTP/RTCP: Packet construction, parsing, and statistics
  • SRTP: Secure RTP with AES-CM-128-HMAC-SHA1-80
  • Audio devices: Cross-platform capture and playback via cpal
  • Resampling: Sample rate conversion between codecs and devices

§Quick Start

use rtp_engine::{MediaSession, CodecType};
use std::net::SocketAddr;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let remote: SocketAddr = "192.168.1.100:5004".parse()?;
     
    // Start a media session with G.711 μ-law
    let session = MediaSession::start(10000, remote, CodecType::Pcmu).await?;
     
    // The session captures from mic and plays to speaker automatically
    // Send DTMF
    session.send_dtmf("1");
     
    // Mute/unmute
    session.set_mute(true);
     
    // Get statistics
    let stats = session.stats();
    println!("Packets sent: {}", stats.packets_sent);
     
    // Stop when done
    session.stop();
    Ok(())
}

§Feature Flags

  • g711 (default): G.711 μ-law and A-law codecs
  • opus: Opus codec support (requires libopus)
  • srtp: SRTP/SRTCP encryption
  • device: Audio device capture/playback via cpal

Re-exports§

pub use codec::CodecType;
pub use error::Error;
pub use error::Result;
pub use jitter::JitterBuffer;
pub use jitter::JitterConfig;
pub use jitter::JitterMode;
pub use jitter::JitterStats;
pub use resample::f32_to_i16;
pub use resample::i16_to_f32;
pub use resample::resample_linear;
pub use resample::resample_linear_i16;
pub use rtp::RtpStats;
pub use srtp::SrtpContext;

Modules§

codec
Audio codec implementations for RTP media.
device
Audio device abstraction for capture and playback.
error
Error types for rtp-engine.
jitter
Jitter buffer implementations for RTP media.
resample
Audio resampling utilities.
rtp
RTP (Real-time Transport Protocol) implementation.
srtp
SRTP (Secure RTP) implementation per RFC 3711.

Structs§

MediaSession
A complete RTP media session with bidirectional audio.