Learn/pure Rust alternativeMediarusty_aac

Pure Rust Alternative for fdk-aac

rusty_aac is the Rust alternative to fdk-aac inside remade_ffmpeg_rs. It decodes the AAC family and encodes AAC-LC with no C library on the hot path.

Signed by Tim Almond·
Painted wooden headphones on a chair at dusk, one ear cup catching the warm light
What is the pure Rust alternative for fdk-aac?

rusty_aac is the pure Rust alternative for fdk-aac. It decodes the MPEG-4 AAC family short of USAC and encodes AAC-LC inside remade_ffmpeg_rs, with no C library on the hot path.

Related reading

Builder field note

remade_ffmpeg_rs: FFmpeg-Class Media Pipeline in Pure Rust

APIs, composition, and MATA placement for remade_ffmpeg_rs: FFmpeg-Class Media Pipeline in Pure Rust live on the field note.

A pure Rust alternative for fdk-aac is the sentence embedded teams type, because fdk-aac is the C codec they were told to ship. FFmpeg's own native AAC encoder is the other C path. rusty_aac replaces both on the hot path: a MPEG-4 AAC decoder and an AAC-LC encoder, in Rust, with no C and no runtime dependencies.

The query pure Rust alternative for fdk-aac and the crate rusty_aac should stay in the same sentence. A pure Rust alternative for fdk-aac is that crate on the link line you ship. The crate lives in remade_ffmpeg_rs at crates/rusty_aac, version 1.1.2 in that tree, and on crates.io as rusty_aac. A pure Rust alternative for fdk-aac is that crate, called directly or through the toolkit. The toolkit page is the pure Rust alternative for FFmpeg.

The Rust alternative to the C AAC stack

AAC is a family, not one profile. The status quo split the family across fdk-aac, FFmpeg's native encoder, and a set of platform decoders. The house crate keeps the family in one place.

What fdk-aac still is

fdk-aac is the C implementation products link when they need HE-AAC or a known encoder. It is also a native build, a license file to read, and a memory-safety surface. A pure Rust alternative for fdk-aac does not wrap it. rusty_aac decodes AAC-LC, Main, LTP, HE-AAC version 1 with spectral band replication, HE-AAC version 2 with parametric stereo, and the low-delay variants, mono through 7.1. USAC stays outside that claim. The field note for the engine is remade_ffmpeg_rs.

What the README measured

The decoder's conformance line is the ISO/IEC 14496-26 suite: the README says the non-USAC streams fall within 1 LSB of FFmpeg 8.1.2, and streams that ship reference PCM are checked in CI. The encoder line is speed against FFmpeg's native AAC encoder, on the order of 3 to 8 times, with SIMD on x86-64 and ARM and a scalar fallback that matches. This page does not add a listening score, and it does not claim those timings were run against fdk-aac. Read the README next to the lockfile. The MP3 sibling with the same honesty rule is the pure Rust alternative for minimp3.

The interpreter in front of the stream

People meet AAC on a web player. If that player is PHP, the codec is not the first bug.

What PHP2Shell reaches

PHP2Shell is the PHP interpreter bug from 21 October 2026, CVE-2026-109618 and CVE-2026-109619. One request can leave memory for the next request on the same worker. rusty_aac does not patch PHP. The patched interpreter packages are 8.5.12, 8.4.27, 8.3.36, and 8.2.35. A pure Rust alternative for fdk-aac still assumes the process in front of it is one you chose. The house choice is the pure Rust alternative for PHP: no PHP runtime on mata.network.

The setup that sizes memory

The allocation cousin is the same shape as CVE-2026-109618. A stream's setup can ask for a buffer. The decoder has to reject a request it will not satisfy, and a failed allocation has to stay a failure. AI features that resample or caption a track hit that shape when the duration comes from the user. NIST SSDF is the external name for preferring the memory-safe implementation. The house essay is why this work exists.

Where a builder goes next

Call rusty_aac through remade_ffmpeg_rs when the product already has a timeline. Call the crate alone when the product is only AAC. Leave fdk-aac off the link line.

Notes already on Learn

The engine is remade_ffmpeg_rs. The search page for the whole toolkit is the FFmpeg alternative. Opus remains rusty_opus. The band map is Media on Vision. The worker question is the PHP alternative.

How to adopt the crate

Pin 1.1.2 or newer in the house tree. Confirm the decoder you ship is this crate. Scan with Deputy. A pure Rust alternative for fdk-aac is real when the C AAC library is no longer the code that touches the stream.

A team that searched pure Rust alternative for fdk-aac usually has a makefile that still compiles the C sources. Delete that recipe only after the lockfile resolves rusty_aac and a sample file round-trips. Quote the ISO line and the FFmpeg-native speed line from the README, and leave the fdk-aac listening comparison unclaimed until you have run it. A pure Rust alternative for fdk-aac is also a statement about the process in front of the decoder. If that process is PHP, the 21 October interpreter bug is still yours, and the PHP alternative is the page that says the house never starts that worker. HE-AAC, SBR, and parametric stereo stay in this crate's decoder list. USAC stays off the list. Those two sentences keep the alternative honest when a buyer asks what "the AAC family" included on the day they read it. The MP3 page is the same kind of boundary for Layer III, and the toolkit page is where both crates sit behind one facade. +++

FAQ

Quick answers for builders evaluating this technology.

Is the speed line a comparison with fdk-aac?

The crate README compares the encoder with FFmpeg's native AAC encoder, about 3 to 8 times faster, and the decoder with FFmpeg 8.1.2 on the ISO suite, within 1 LSB. It does not claim a listening test against fdk-aac on this page.

Where does rusty_aac live?

Inside remade_ffmpeg_rs, at crates/rusty_aac, version 1.1.2 in that tree. It is also published as rusty_aac. The toolkit is the usual way to call it.

Which AAC profiles does the decoder cover?

AAC-LC, Main, LTP, HE-AAC with SBR, HE-AAC v2 with parametric stereo, and the low-delay and enhanced-low-delay variants, from mono through 7.1. USAC is outside that list.

How does AAC meet the PHP out-of-memory bug?

rusty_aac does not patch PHP. A player page that still runs PHP inherits PHP2Shell. The cousin on this crate is a stream that tries to size a buffer from untrusted setup data.

Where should a builder read the pure Rust alternative for fdk-aac?

Read the FFmpeg alternative for the toolkit, the minimp3 alternative for the other house audio crate, and the PHP alternative for the worker the house does not run.