5个不稳定版本

0.3.0 2023年8月19日
0.2.2 2023年8月4日
0.2.0 2023年7月12日
0.1.0 2023年7月9日
0.0.0 2023年6月10日

#403音频

Download history 3/week @ 2024-03-09 1/week @ 2024-03-16 28/week @ 2024-03-30 7/week @ 2024-04-06

每月 63 次下载

MIT/Apache

3.5MB
22K SLoC

fsbex

Crates.io Docs.rs License

fsbex是从FMOD音库中提取音频的库。目前仅支持FSB版本5。

示例

解析音库,然后将流写入文件

use fsbex::{Bank, AudioFormat};
use std::{
    error::Error,
    io::{BufReader, BufWriter},
    fs::File,
};

fn main() -> Result<(), Box<dyn Error>> {
    // open file for reading sound bank
    let file = BufReader::new(File::open("example.fsb")?);
    let bank = Bank::new(file)?;

    // report number of streams contained within the sound bank
    println!("{} streams within this sound bank", bank.num_streams());

    // check stream audio format
    if bank.format() != AudioFormat::Vorbis {
        return Err("expected Vorbis format".into());
    }

    // iterate over streams
    for (index, stream) in bank.into_iter().enumerate() {
        // check stream name
        let file_name = if let Some(name) = stream.name() {
            format!("{name}.ogg")
        } else {
            format!("stream_{index}.ogg")
        };

        // write stream data to file
        let output_file = BufWriter::new(File::create(file_name)?);
        stream.write(output_file)?;
    }

    Ok(())
}

支持的格式

fsbex支持以下格式的编码流数据

  • PCM(8、16、24、32位整数)
  • PCM(32位浮点数)
  • Vorbis

致谢

fsbex的实现离不开以下项目

许可证

许可证为以下之一

任选其一。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~4–13MB
~145K SLoC