11个不稳定版本 (4个破坏性更新)

0.5.1 2021年1月2日
0.5.0 2020年8月27日
0.4.0 2020年8月26日
0.3.5 2020年2月20日
0.1.0 2018年1月31日

#79 in 音频

Download history 3065/week @ 2024-04-20 2652/week @ 2024-04-27 2578/week @ 2024-05-04 2684/week @ 2024-05-11 3103/week @ 2024-05-18 2832/week @ 2024-05-25 3397/week @ 2024-06-01 1913/week @ 2024-06-08 2824/week @ 2024-06-15 2751/week @ 2024-06-22 1345/week @ 2024-06-29 1277/week @ 2024-07-06 3064/week @ 2024-07-13 2703/week @ 2024-07-20 2562/week @ 2024-07-27 2047/week @ 2024-08-03

10,510 每月下载量
用于 31 个Crates (20个直接使用)

MIT 许可证

69KB
1K SLoC

C 826 SLoC // 0.0% comments Shell 173 SLoC // 0.0% comments Rust 151 SLoC // 0.1% comments

minimp3 Rust绑定

Cargo package Cargo package Build Status

使用示例

# Cargo.toml

[dependencies]
minimp3 = "0.5"
use minimp3::{Decoder, Frame, Error};

use std::fs::File;

fn main() {
    let mut decoder = Decoder::new(File::open("audio_file.mp3").unwrap());

    loop {
        match decoder.next_frame() {
            Ok(Frame { data, sample_rate, channels, .. }) => {
                println!("Decoded {} samples", data.len() / channels)
            },
            Err(Error::Eof) => break,
            Err(e) => panic!("{:?}", e),
        }
    }
}

异步I/O

解码器可以通过 async_tokio 功能标志与Tokio一起使用。

# Cargo.toml

[dependencies]
minimp3 = { version = "0.4", features = ["async_tokio"] }

# tokio runtime
tokio = {version = "0.2", features = ["full"] }
use minimp3::{Decoder, Frame, Error};

use tokio::fs::File;

#[tokio::main]
async fn main() {
    let file = File::open("minimp3-sys/minimp3/vectors/M2L3_bitrate_24_all.bit").await.unwrap();
    let mut decoder = Decoder::new(file);

    loop {
        match decoder.next_frame_future().await {
            Ok(Frame {
                   data,
                   sample_rate,
                   channels,
                   ..
               }) => println!("Decoded {} samples", data.len() / channels),
            Err(Error::Eof) => break,
            Err(e) => panic!("{:?}", e),
        }
    }
}

依赖项

~0.5–2.5MB
~47K SLoC