14 releases (7 breaking)

Uses old Rust 2015

0.8.0 Apr 21, 2023
0.7.0 Aug 21, 2020
0.6.1 Jul 23, 2020
0.5.0 Nov 30, 2019
0.1.1 Nov 7, 2015

#1059 in Parser implementations

Download history 2325/week @ 2024-11-16 1909/week @ 2024-11-23 2843/week @ 2024-11-30 2468/week @ 2024-12-07 1751/week @ 2024-12-14 1304/week @ 2024-12-21 1692/week @ 2024-12-28 1999/week @ 2025-01-04 2602/week @ 2025-01-11 2469/week @ 2025-01-18 2031/week @ 2025-01-25 3230/week @ 2025-02-01 3015/week @ 2025-02-08 2737/week @ 2025-02-15 3119/week @ 2025-02-22 2788/week @ 2025-03-01

12,157 downloads per month
Used in 17 crates (13 directly)

MIT license

25KB
525 lines

y4m Build Status crates.io

YUV4MPEG2 (.y4m) Encoder/Decoder. Format specification.

Usage

Simple stream copying:

extern crate y4m;
use std::io;

let mut infh = io::stdin();
let mut outfh = io::stdout();
let mut dec = y4m::decode(&mut infh).unwrap();
let mut enc = y4m::encode(dec.get_width(), dec.get_height(), dec.get_framerate())
    .with_colorspace(dec.get_colorspace())
    .write_header(&mut outfh)
    .unwrap();
loop {
    match dec.read_frame() {
        Ok(frame) => if enc.write_frame(&frame).is_err() { break },
        _ => break,
    }
}

See API documentation for overview of all available methods. See also this example on how to resize input y4m into grayscale y4m of different resolution:

cargo build --release --example resize
ffmpeg -i in.mkv -f yuv4mpegpipe - | target/release/examples/resize - 640x360 - | mpv -

License

Library is licensed under MIT.

No runtime deps