1 unstable release
Uses new Rust 2024
| 0.1.0 | Dec 24, 2025 |
|---|
#1371 in Images
105 downloads per month
2.5MB
1.5K
SLoC
wmvkit
This crate provides:
- ASF container parsing and demuxing for typical
.wmvfiles (ASF Header Object + Data Object). - Stream separation: video compressed access units and audio compressed frames are emitted as
DemuxedSample.
Quick start
use std::fs::File;
use wmvkit::asf::AsfDemuxer;
fn main() -> anyhow::Result<()> {
let f = File::open("input.wmv")?;
let mut demux = AsfDemuxer::open(f)?;
println!("streams: {:#?}", demux.streams());
while let Some(sample) = demux.next_sample()? {
println!("sample: stream={} kind={:?} pts_ms={} key={} bytes={}",
sample.stream_number, sample.kind, sample.pts_ms, sample.is_key, sample.data.len());
}
Ok(())
}
Layout
src/asf/*: ASF GUIDs, header parsing, data packet parsing, media-object reassembly.src/codec/*: bitreader, VLC, IDCT, pixel helpers.src/vc1/*: VC-1 (WMV9) parser.
Decoder selection helper
let dec = wmvkit::factory::make_video_decoder(vstream)?;
Note: WMV1/WMV2 decoders are currently not fully implemented.
Dependencies
~1–37MB
~497K SLoC