music_stream/
music-stream.rs

1use {
2    sfml::{
3        audio::{Music, SoundStatus},
4        system::{InputStream, Time, sleep},
5    },
6    std::{error::Error, fs::File, io::Write},
7};
8
9include!("../example_common.rs");
10
11fn main() -> Result<(), Box<dyn Error>> {
12    example_ensure_right_working_dir();
13
14    let mut file = File::open("orchestral.ogg")?;
15    let mut stream = InputStream::new(&mut file);
16    let mut music = Music::from_stream(&mut stream)?;
17
18    // Display Music informations
19    println!("orchestral.ogg :");
20    println!(" {} seconds", music.duration().as_seconds());
21    println!(" {} samples / sec", music.sample_rate());
22    println!(" {} channels", music.channel_count());
23
24    music.play();
25
26    while music.status() == SoundStatus::PLAYING {
27        // Leave some CPU time for other processes
28        sleep(Time::milliseconds(100));
29        // Display the playing position
30        print!(
31            "\rPlaying... {:.2} sec",
32            music.playing_offset().as_seconds()
33        );
34        let _ = std::io::stdout().flush();
35    }
36    println!();
37    Ok(())
38}