snapcast-client 0.3.1

Snapcast client library — embeddable synchronized multiroom audio
Documentation

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(())
# }