wmvkit

Crates.iowmvkit
lib.rswmvkit
version0.1.0
created_at2025-12-24 15:59:59.239608+00
updated_at2025-12-24 15:59:59.239608+00
descriptionPure-Rust ASF (.wmv) demuxer.
homepage
repositoryhttps://github.com/xmoezzz/wmvkit
max_upload_size
id2003510
size3,311,472
xmoe (xmoezzz)

documentation

README

wmvkit

This crate provides:

  • ASF container parsing and demuxing for typical .wmv files (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.

Commit count: 0

cargo fmt