#vorbis #opus #codec #music #api-bindings

opusenc

High-level bindings for libopusenc

3 unstable releases

0.2.2 Oct 21, 2024
0.2.1 Jan 21, 2024
0.2.0 Jan 21, 2024
0.1.0 Jul 22, 2023

#509 in Audio

Download history 2/week @ 2024-09-23 5/week @ 2024-09-30 181/week @ 2024-10-21 27/week @ 2024-12-02 34/week @ 2024-12-09

61 downloads per month

BSD-3-Clause

730KB
745 lines

opusenc-rs

Build Status Crates.io Documentation License: BSD-3-Clause

High-level bindings for libopusenc.

Example

let audio_data: Vec<i16> = {
    let mut file = std::fs::File::open("/dev/urandom")?;
    let mut buf = vec![0; 60 * 48_000 * 2 * 2];
    file.read_exact(&mut buf)?;
    buf.chunks_exact(2)
        .map(|a| i16::from_ne_bytes([a[0], a[1]]))
        .collect()
};

let mut encoder = Encoder::create_file(
    "/tmp/noise.opus",
    Comments::create()
        .add(RecommendedTag::Title, "Random Noise")?
        .add(RecommendedTag::Artist, "/dev/urandom")?,
    48_000,
    2,
    MappingFamily::MonoStereo,
)?;

encoder.write(&audio_data)?;
encoder.drain()?;

Encoder options

This crate provides a encoder-options feature which enables reading and changing encoder options.

Warning: Some of these options might not work with opusenc, may be unsafe or even cause UB. They are intended to be used via C macros that don't work with Rust. Make sure to check if the methods you use match their intended behaviour.

License

This project is licensed under the BSD-3-Clause License.

See COPYING for more information.

Dependencies

~0.2–2.5MB
~52K SLoC