Replies: 1 comment 1 reply
-
Hi, every audio chunk is tagged with the local server time. The default buffer size is one second and so each client must play this chunk at the tagged time + 1s. To be able to do this, each client must know the server's local time. Therefore a client sends his current time in a |
Beta Was this translation helpful? Give feedback.
-
Hi there.
While working on a go client library implementation, I realised that I do not get how the Snapcast sync method will work in the general case.
I do understand the time sync method and protocol, but looking at a higher level - how can the system make all clients play in sync when it is only up to clients to speed up / slow down to get in sync?
Let's say we have two clients, A and B.
Client A has 200ms throughput latency (from received chunk to speaker output) and client B has 10ms.
Since the server does not do any inter-client delay compensation, how could these clients ever play in sync?
I get that the players can keep in sync at a somewhat fixed delay. In my example, A and B would not drift apart more than the 190ms between them. But if the server is not delaying the stream to B, the players will not be in sync.
I hope I'm missing something important here :)
Beta Was this translation helpful? Give feedback.
All reactions