rmpeg

A Rust media stack tested against FFmpeg.

Generated from local correctness and benchmark JSON at 2026-06-13T15:28:21Z.

Current Status

rmpeg is not FFmpeg-compatible yet. The MVP has WAV decode/hash plus probe-level MP3, FLAC, Ogg/Opus, Ogg/Vorbis, and MP4/H.264/AAC metadata.

AreaStatus
WAV/PCM metadata7/7 passing
WAV/PCM decode/hash7/7 passing
MP3 metadata1/1 passing
MP3 decode/hashnot implemented
FLAC metadata1/1 passing
FLAC decode/hashnot implemented
Ogg audio metadata2/2 passing
Ogg audio decode/hashnot implemented
MP4/MOV metadata1/1 passing
H.264/AAC metadata1/1 passing
H.264/AAC decode/hashnot implemented
Filtersnot started

Correctness

TestKindStatusDetails
probe mp4 h264_aac_mp4probe-jsonpassed
decode/hash mp4 h264_aac_mp4framemd5skippedcompressed decode/hash is not implemented
probe wav mono_silence_8kprobe-jsonpassed
decode/hash wav mono_silence_8kframemd5passed
probe wav odd_chunksprobe-jsonpassed
decode/hash wav odd_chunksframemd5passed
probe wav pcm_u8probe-jsonpassed
decode/hash wav pcm_u8framemd5passed
probe wav short_100msprobe-jsonpassed
decode/hash wav short_100msframemd5passed
probe wav stereo_44k_sineprobe-jsonpassed
decode/hash wav stereo_44k_sineframemd5passed
probe wav tinyprobe-jsonpassed
decode/hash wav tinyframemd5passed
probe flac tone_flacprobe-jsonpassed
decode/hash flac tone_flacframemd5skippedcompressed decode/hash is not implemented
probe mp3 tone_mp3probe-jsonpassed
decode/hash mp3 tone_mp3framemd5skippedcompressed decode/hash is not implemented
probe ogg tone_opusprobe-jsonpassed
decode/hash ogg tone_opusframemd5skippedcompressed decode/hash is not implemented
probe ogg tone_vorbisprobe-jsonpassed
decode/hash ogg tone_vorbisframemd5skippedcompressed decode/hash is not implemented
probe wav truncated_riffprobe-jsonpassedboth ffprobe and rmpeg-probe rejected input
decode/hash wav truncated_riffframemd5passedboth ffmpeg and rmpeg rejected input

FFmpeg Sample Corpus

This optional check syncs upstream FFmpeg FATE samples with FFmpeg's own make fate-rsync target, then probes every regular file with ffprobe and rmpeg-probe.

MetricValue
Generated2026-06-13T15:32:27Z
FFmpeg commit3773831
Samples directory/home/runner/work/rmpeg/rmpeg/.cache/ffmpeg/fate-suite
Total files checked2511
ffprobe accepted2154
rmpeg-probe accepted261
Passed445
Failed2066
Errors0
SampleStatusDetails
012v/sample.avifailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
4xm/TimeGatep01s01n01a02_2.4xmfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
4xm/dracula.4xmfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
4xm/version1.4xmfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
4xm/version2.4xmfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
8bps/full9iron-partial.movfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
CCITT_fax/G31D.TIFfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
CCITT_fax/G31DS.TIFfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
CCITT_fax/G4.TIFfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
CCITT_fax/G4S.TIFfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
CSCD/sample_video.avifailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
KMVC/LOGO1.AVIfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
SIFF/INTRO_B.VBfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
VMnc/VS2k5DebugDemo-01-partial.avifailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
VMnc/test.avifailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: missing WAVE header
aa/bush.aafailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
aac/CT_DecoderCheck/File1.aacfailedformat: expected aac, got mp3; stream 0.codec_name: expected aac, got mp3; stream 0.duration_seconds: expected 7.756872, got 0.026122
aac/CT_DecoderCheck/File1_fixed.aacfailedformat: expected aac, got mp3; stream 0.codec_name: expected aac, got mp3; stream 0.duration_seconds: expected 7.771926, got 0.026122
aac/CT_DecoderCheck/File2.mp4failedstream 0.sample_rate: expected 44100, got 22050
aac/CT_DecoderCheck/license.txtfailedffprobe accepted input but rmpeg-probe rejected it: rmpeg-probe: invalid data: unsupported or unrecognized media format
aac/CT_DecoderCheck/sbr_i-ps_i.aacfailedformat: expected aac, got mp3; stream 0.codec_name: expected aac, got mp3; stream 0.duration_seconds: expected 7.771926, got 0.026122
aac/CT_DecoderCheck/sbr_i-ps_i.mp4failedstream 0.sample_rate: expected 44100, got 22050
aac/Fd_2_c1_Ms_0x01.mp4failedffprobe rejected input but rmpeg-probe accepted it
aac/Fd_2_c1_Ms_0x01.s16failedffprobe rejected input but rmpeg-probe accepted it
aac/Fd_2_c1_Ms_0x04.mp4failedffprobe rejected input but rmpeg-probe accepted it

Benchmarks

BenchmarkFFmpeg meanrmpeg meanRelativeStatus
probe tiny wav0.056298s0.000928srmpeg is 60.65x fastermeasured
probe tone mp30.052949s0.000876srmpeg is 60.46x fastermeasured
probe h264/aac mp40.053191s0.000873srmpeg is 60.93x fastermeasured
probe tone flac0.050390s0.000866srmpeg is 58.20x fastermeasured
probe tone opus0.049887s0.000882srmpeg is 56.59x fastermeasured
probe tone vorbis0.051812s0.000862srmpeg is 60.09x fastermeasured
framemd5 tiny wav0.049746s0.000855srmpeg is 58.20x fastermeasured

Supported Formats

Implemented: RIFF/WAVE with PCM signed 16-bit little-endian audio and PCM unsigned 8-bit audio, mono or stereo; MP3 frame-header metadata; FLAC STREAMINFO metadata; Ogg/Opus and Ogg/Vorbis header metadata; MP4/MOV track metadata for H.264 video and AAC audio.

Not implemented: MP3 decode, FLAC decode, Opus decode, Vorbis decode, AAC decode, H.264 decode, filters, seeking, resampling, remuxing, and most codec/container behavior.

Known Failures

Autoresearch Log

No autoresearch runs recorded yet.

How To Reproduce

cargo xtask samples
cargo xtask reference
cargo xtask fate-mini
cargo xtask ffmpeg-samples
cargo xtask bench
cargo xtask site