Expand description
Media engine configuration for codecs and RTP extensions.
The media engine manages codec registration, RTP header extensions, and media capabilities negotiation for peer connections. It defines what codecs and features are available for encoding/decoding media streams.
§Overview
- Codec Registration - Define supported audio/video codecs
- Header Extensions - Configure RTP header extensions
- Feedback Mechanisms - Register RTCP feedback types
- Negotiation - Codec and extension negotiation with remote peers
§Examples
§Using Default Codecs
use rtc::peer_connection::configuration::media_engine::MediaEngine;
let mut media_engine = MediaEngine::default();
// Register standard WebRTC codecs
media_engine.register_default_codecs()?;
// Now supports: Opus, G722, PCMU, PCMA, VP8, VP9, H264, AV1§Registering Custom Codec
use rtc::peer_connection::configuration::media_engine::{MediaEngine, MIME_TYPE_OPUS};
use rtc::rtp_transceiver::rtp_sender::{RTCRtpCodec, RtpCodecKind, RTCRtpCodecParameters};
let mut media_engine = MediaEngine::default();
// Register Opus with custom parameters
let opus_codec = RTCRtpCodecParameters {
rtp_codec: RTCRtpCodec {
mime_type: MIME_TYPE_OPUS.to_owned(),
clock_rate: 48000,
channels: 2,
sdp_fmtp_line: "minptime=10;useinbandfec=1;stereo=1".to_owned(),
rtcp_feedback: vec![],
},
payload_type: 111,
..Default::default()
};
media_engine.register_codec(opus_codec, RtpCodecKind::Audio)?;§Registering RTP Header Extension
use rtc::peer_connection::configuration::media_engine::MediaEngine;
use rtc::rtp_transceiver::rtp_sender::{RtpCodecKind, RTCRtpHeaderExtensionCapability};
use rtc::rtp_transceiver::RTCRtpTransceiverDirection;
let mut media_engine = MediaEngine::default();
// Register audio level extension
media_engine.register_header_extension(
RTCRtpHeaderExtensionCapability {
uri: "urn:ietf:params:rtp-hdrext:ssrc-audio-level".to_string(),
},
RtpCodecKind::Audio,
Some(RTCRtpTransceiverDirection::Sendrecv),
)?;Structs§
- Media
Engine - Media engine managing codecs and RTP capabilities for peer connections.
Constants§
- MIME_
TYPE_ AV1 - AV1 video codec MIME type.
- MIME_
TYPE_ FLEX_ FEC - FlexFEC forward error correction MIME type.
- MIME_
TYPE_ FLEX_ FEC03 - FlexFEC-03 forward error correction MIME type.
- MIME_
TYPE_ G722 - G.722 audio codec MIME type.
- MIME_
TYPE_ H264 - H.264 video codec MIME type.
- MIME_
TYPE_ HEVC - H.265/HEVC video codec MIME type.
- MIME_
TYPE_ OPUS - Opus audio codec MIME type.
- MIME_
TYPE_ PCMA - PCMA (G.711 A-law) audio codec MIME type.
- MIME_
TYPE_ PCMU - PCMU (G.711 μ-law) audio codec MIME type.
- MIME_
TYPE_ RTX - RTX (Retransmission) MIME type.
- MIME_
TYPE_ TELEPHONE_ EVENT - Telephone-event MIME type for DTMF tones.
- MIME_
TYPE_ ULP_ FEC - ULP FEC (Uneven Level Protection Forward Error Correction) MIME type.
- MIME_
TYPE_ VP8 - VP8 video codec MIME type.
- MIME_
TYPE_ VP9 - VP9 video codec MIME type.