Quadronado hat geschrieben:
Also die Einstellung mit den Buffergrößen habe ich nicht gefunden, aber mit den Einstellungen "Startverzögerung des Players (ms)" und "Audioverzögerung des Players (ms)" wird es etwas besser.
Das sind aber die Server-Einstellungen. Was ich meinte, sind Einstellungen für SqueezeLite. Vermutlich über die Kommandozeile. Ich verwende den selber nicht (muss ich mal machen), deshalb kann ich hier leider nur mit Theorie dienen...
Ich habe es jetzt so hinbekommen, das es für ein paar Sekunden fast synchron läuft. Nach einiger Zeit läuft es aber wieder auseinander. Läuft die Musik da mit unterschiedlicher Geschwindigkeit?
Ja, das tut sie immer. Der Server korrigiert das normalerweise. Du würdest Dich wundern, was manche Systeme da zum Teil machen. ich habe für iPeng neulich mal versucht, Bluetooth-Lautsprecher zu synchronisieren, das ist krass, wie die zum Teil driften.
Das Problem bei Software-Playern ist aber ein anderes: Um die Player aktiv synchron halten zu können, muss der Server wissen, wann genau die Musik auf dem Player tatsächlich gespielt wird. Dazu wiederum muss der Player das wissen, damit er es dem Server sagen kann....
Die meisten PC-Audio-Treiber haben aber mehr oder weniger große Zwischenspeicher, über die sie den Ton abspielen, d.h. nachdem der Player die Musik "abgeschickt" hat, landet die erst mal in einem Buffer und wird dann eine undefinierte Zeit später abgespielt. Der Player kennt aber nur den Zeitpunkt, wann er die Musik in den Buffer geschrieben hat, nicht den, zu dem die Musik abgespielt wird.
Je kleiner der Buffer, desto besser.
Um dem ganzen zu begegnen gibt es spezielle Treiber (ASIO-Treiber), die das ganze umgehen und die Musik direkt an die Audiokarte schicken. Das kostet etwas Performance und wenn der Rechner gar ganz arg beschäftigt ist, kann die Musik auch mal aussetzen, aber dafür ist es eben weitgehend latenzfrei.
Ob SqueezeLite unter Windows sowas unterstützt, weiß ich nicht. Unter Linux gibt es für Portaudio ASIO-Treiber und Portaudio wird von SqueezeLite unterstützt, das sollte also gehen. Allerdings hildt es da evtl. auch einfach im normalen ALSA-Treiber die Buffergröße sehr klein zu wählen, damit wird man wohl etwas experimentieren müssen. Logitech verwendet bei den Squeezeboxen jedenfalls ALSA, allerdings mit eigenen Treibern.
Ausserdem frage ich mich schon länger, ob man dem Problem mit einer externen Soundkarte begegnen könnte? Es scheint ja irgendwie mit der Hardware zu tun zu haben??
Nein, es hat nichts mit der Hardware zu tun, sondern mit dem Treiber... Also... das ist nicht ganz richtig, wenn die Hardware selber _auch_ nochmal buffert, dann wird es natürlich nicht besser....
Ganz super ist es, wenn das Betriebssystem sowas richtig unterstützt, wie bei Apple. Da kannst Du _nach_ der ganzen Bufferei nochmal vom System eine Information bekommen, dass der Sound jetzt anschließend wirklich gespielt wird (und Du kannst ihn sogar nochmal verändern, also z.B. Samples fallen lassen), damit geht das dann recht gut.
Allerdings ist mir nicht bewusst, dass jemand mal einen echten Mac-Player geschrieben hat. Die gängigen sind eigentlich Linux-Player, die dann entsprechend auch auf dem Mac laufen aber keine Core-Audio Techniken beherrschen, da müsste man für die ganze Code-Logik ändern.