Expand description
§fsbex
fsbex
is a library for extracting audio from FMOD sound banks. Only FSB version 5 is supported for now.
§Example
Parsing a sound bank, then writing streams to files:
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(())
}
§Supported formats
fsbex
supports encoding stream data for the following formats:
- PCM (8, 16, 24, 32-bit integer)
- PCM (32-bit float)
- Vorbis
Modules§
- encode
- Various types associated with encoding stream data from sound banks.
Structs§
- Bank
- An FMOD sound bank.
- Decode
Error - Represents an error that can occur when parsing a sound bank.
- Lazy
Stream - An audio stream of data that has not been read yet.
- Lazy
Stream Error - Represents an error that can occur when reading sound bank streams with
Bank::read_streams
. - Loop
- Loop information associated with a stream.
- Stream
- An audio stream of data that has already been read.
- Stream
Into Iter - An iterator over sound bank streams.
Enums§
- Audio
Format - Represents known audio formats of streams within a sound bank.