Snapcast client library — embeddable synchronized multiroom audio client.
See also: snapcast-server for the server library.
Snapcast client library — embeddable synchronized multiroom audio.
Example
use snapcast_client::{SnapClient, ClientConfig, ClientEvent, ClientCommand};
# async fn example() -> anyhow::Result<()> {
let config = ClientConfig::default();
let (mut client, mut events, mut audio_rx) = SnapClient::new(config);
let cmd = client.command_sender();
// React to events in a separate task
tokio::spawn(async move {
while let Some(event) = events.recv().await {
match event {
ClientEvent::VolumeChanged { volume, muted } => {
println!("Volume: {volume}, muted: {muted}");
}
_ => {}
}
}
});
// Stop on Ctrl-C
let stop = cmd.clone();
tokio::spawn(async move {
tokio::signal::ctrl_c().await.ok();
stop.send(ClientCommand::Stop).await.ok();
});
client.run().await?;
# Ok(())
# }