From 948c1f212cab5d56e82e47fd8ff10f20ecbf847f Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Fri, 31 May 2024 15:12:23 +0200 Subject: Initial attempt doesn't work --- src/audio/rodio.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/audio/rodio.rs') diff --git a/src/audio/rodio.rs b/src/audio/rodio.rs index 04883dd..8262b82 100644 --- a/src/audio/rodio.rs +++ b/src/audio/rodio.rs @@ -1,9 +1,24 @@ -use super::AudioBackend; +use rodio::{Decoder, OutputStream, Sink}; +use stream_download::{storage::temp::TempStorageProvider, Settings, StreamDownload}; pub struct Rodio {} -impl AudioBackend for Rodio { - fn play(&self, _url: &str) { - todo!() +impl Rodio { + pub async fn play(&self, url: &str) { + let reader = StreamDownload::new_http( + url.parse().unwrap(), + TempStorageProvider::new(), + Settings::default(), + ) + .await + .unwrap(); + + let _res = tokio::task::spawn_blocking(move || { + let (_stream, handle) = OutputStream::try_default().unwrap(); + let sink = Sink::try_new(&handle).unwrap(); + sink.append(Decoder::new(reader).unwrap()); + sink.sleep_until_end(); + }) + .await; } } -- cgit v1.3.1