rodio

  1. OutputStream
  2. Decoder MP3/WAV/FLAC
  3. Sink ///

rodio::Decoder → PCM → Sink::append

reqwest HTTP Stream trait Decoder::new(Cursor::new(data))

网络嗅探与中间人攻击


[dependencies]
rodio = "0.19"
reqwest = { version = "0.12", features = ["stream"] }
use rodio::{Decoder, OutputStream, Sink, Source};
use std::fs::File;
use std::io::BufReader;
 
fn main() -> Result<(), Box<dyn std::error::Error>> {
 let (_stream, handle) = OutputStream::try_default()?;
 let sink = Sink::try_new(&handle)?;
 
 let file = BufReader::new(File::open("song.mp3")?);
 let source = Decoder::new(file)?;
 sink.append(source);
 
 sink.set_volume(0.5);
 sink.play();
 sink.pause();
 sink.stop();
 
 sink.sleep_until_end();
 Ok(())
}

I/O