Discussion:
VLC, PulseAudio ständig wechselndes Resampling abgewöhnen
(zu alt für eine Antwort)
Marcel Mueller
2022-09-05 11:36:53 UTC
Permalink
Hi!

Ich habe hier seit einiger Zeit das Problem, dass die Audiowiedergabe
mit VLC hörbar eiert. Offenkundig fühlt sich PulseAudio genötigt, die
Samplingrate dynamisch zu verändern. In VLC log finden sich passen dazu
Meldungen wie
main warning: playback too early (-41126): down-sampling
main debug: resampling stopped (drift: -8697 us)
Das ist natürlich totaler Müll, dann fast einen Halbton an der
Samplingrate zu drehen.

Ich habe aber nicht herausgefunden, wie man das abstellt.
avoid-resampling = true habe ich schon drin stehen. Aber das bezieht
sich wohl eher auf 44,1kHz->48kHz Resampling.

Das ganze ist unter Ubuntu 20.04.
Früher ist mir das nicht aufgefallen, erst die letzten Wochen - gleiche
Software (vorbehaltlich der automatischen Updates).

Irgendeine Idee, wie man das abstellt?


Marcel
Marcel Mueller
2022-09-06 20:13:07 UTC
Permalink
Post by Marcel Mueller
Ich habe hier seit einiger Zeit das Problem, dass die Audiowiedergabe
mit VLC hörbar eiert. Offenkundig fühlt sich PulseAudio genötigt, die
Samplingrate dynamisch zu verändern. In VLC log finden sich passen dazu
Meldungen wie
main warning: playback too early (-41126): down-sampling
main debug: resampling stopped (drift: -8697 us)
Früher ist mir das nicht aufgefallen, erst die letzten Wochen - gleiche
Software (vorbehaltlich der automatischen Updates).
Ich glaube eine Lösung gefunden zu haben:
In VLC die erweiterten Audio-Einstellungen aktivieren und dann bei
"Audioresampler" statt "automatisch" (Voreinstellung) "deaktiviert"
auswählen.

Zumindest habe ich den Effekt seither nicht mehr bemerkt.
Warum das auf einmal Amok läuft, weiß ich aber immer noch nicht. Auf
jeden Fall ist es eine gute Idee, wenn VLC nicht an der Samplingrate
nicht herumpfuscht. Keine Ahnung, was dieses Resampling im Player jemals
sinnvolles bewirken sollte.


Marcel
Enrik Berkhan
2022-09-07 05:38:39 UTC
Permalink
Post by Marcel Mueller
Zumindest habe ich den Effekt seither nicht mehr bemerkt.
Warum das auf einmal Amok läuft, weiß ich aber immer noch nicht. Auf
jeden Fall ist es eine gute Idee, wenn VLC nicht an der Samplingrate
nicht herumpfuscht. Keine Ahnung, was dieses Resampling im Player jemals
sinnvolles bewirken sollte.
Das dürfte für den Fall (Normalfall vor ein paar Jahren?) gedacht sein,
dass VLC mehr oder weniger direkt auf ein Hardwaredevice abspielt. Die
haben in der Regel keine 100% exakte Samplingrate. Wenn man da keine
ASRC als Feinkorrektur macht, dann laufen bei Videos irgendwann Ton und
Bild asynchron.

Wenn die Audioausgabe aber über einen Daemon läuft, der seinerseits
ähnliches tut, dann kann das u.U. wohl ins Schwingen geraten. Insofern
sollte deine Gegenmaßnahme das Richtige[TM] bewirken.

Eine andere (eher unwahrscheinliche) Möglichkeit ist, dass irgendwo eine
andere Samplingrate gemeldet wird, als tatsächlich verwendet wird.

Das ist jetzt allerdings alles Spekulation, ich habe nirgends tiefer
reingeschaut.

Gruß,
Enrik
Marcel Mueller
2022-09-07 09:37:31 UTC
Permalink
Post by Enrik Berkhan
Post by Marcel Mueller
Zumindest habe ich den Effekt seither nicht mehr bemerkt.
Warum das auf einmal Amok läuft, weiß ich aber immer noch nicht. Auf
jeden Fall ist es eine gute Idee, wenn VLC nicht an der Samplingrate
nicht herumpfuscht. Keine Ahnung, was dieses Resampling im Player jemals
sinnvolles bewirken sollte.
Das dürfte für den Fall (Normalfall vor ein paar Jahren?) gedacht sein,
dass VLC mehr oder weniger direkt auf ein Hardwaredevice abspielt. Die
haben in der Regel keine 100% exakte Samplingrate.
Das habe sie heute auch nicht und werden sie auch nie haben, denn
Bauteile ohne Toleranz gibt es nicht.
Post by Enrik Berkhan
Wenn man da keine
ASRC als Feinkorrektur macht, dann laufen bei Videos irgendwann Ton und
Bild asynchron.
Genau das wiederum passiert nicht, da wirklich jeder auch nur halbwegs
brauchbare Videoplayer das Bild nach dem Ton synchronisiert.

Allerdings kann das Problem auftreten, wenn man eine Live-Quelle
abspielt, die einen anderen physischen Schwingquarz als Zeitbasis hat,
also z.B. eine Internet-Stream oder eine Audiosignal, dass man
blöderweise digital per S/P-DIF einspeist. Dann können die Quelle und
Ziel mit der Zeit auseinander driften.
Aber wenn man so ein Problem hat, korrigiert man die Frequenz _ein
bisschen_ und nicht um fast einen Halbton, so dass die Wiedergabe eiert.
Die Quarz-Toleranzen bewegen sich üblicherweise in der Größenordnung
100ppm und weniger. Das würde niemand hören.
Post by Enrik Berkhan
Wenn die Audioausgabe aber über einen Daemon läuft, der seinerseits
ähnliches tut, dann kann das u.U. wohl ins Schwingen geraten. Insofern
sollte deine Gegenmaßnahme das Richtige[TM] bewirken.
Hmm, wäre möglich.
Post by Enrik Berkhan
Eine andere (eher unwahrscheinliche) Möglichkeit ist, dass irgendwo eine
andere Samplingrate gemeldet wird, als tatsächlich verwendet wird.
Laut Debug-Logs (VLC und PA) passt das alles. Das meiste Material sind
CD-RIPs mit 44,1 kHz. Und auf der Frequenz läuft auch das ALSA-Device,
solange PulseAudio keine Streams mischen muss.

Ich hatte eigentlich eher PulseAudio im Verdacht, zumal ich da noch per
module-ladspa Filter für Digital Room Correction in der Pipeline habe.
Aber das scheint hier unbeteiligt zu sein. Der Fehler trat auch ohne das
Modul auf.
Die direkte Wiedergabe von VLC auf ALSA habe ich aber nicht getestet.


Marcel
Enrik Berkhan
2022-09-07 10:24:26 UTC
Permalink
Post by Marcel Mueller
Post by Enrik Berkhan
Wenn man da keine
ASRC als Feinkorrektur macht, dann laufen bei Videos irgendwann Ton und
Bild asynchron.
Genau das wiederum passiert nicht, da wirklich jeder auch nur halbwegs
brauchbare Videoplayer das Bild nach dem Ton synchronisiert.
Ja, in der Regel schon. Es gibt aber auch Player, die synchron auf
mehreren Devices abspielen, dann geht das nicht mehr. Das ist bei dir
mit einem VLC natürlich nicht der Fall.

Gruß,
Enrik
Matthias Andree
2022-09-08 18:51:27 UTC
Permalink
Post by Marcel Mueller
Post by Enrik Berkhan
Post by Marcel Mueller
Zumindest habe ich den Effekt seither nicht mehr bemerkt.
Warum das auf einmal Amok läuft, weiß ich aber immer noch nicht. Auf
jeden Fall ist es eine gute Idee, wenn VLC nicht an der Samplingrate
nicht herumpfuscht. Keine Ahnung, was dieses Resampling im Player jemals
sinnvolles bewirken sollte.
Das dürfte für den Fall (Normalfall vor ein paar Jahren?) gedacht sein,
dass VLC mehr oder weniger direkt auf ein Hardwaredevice abspielt. Die
haben in der Regel keine 100% exakte Samplingrate.
Das habe sie heute auch nicht und werden sie auch nie haben, denn
Bauteile ohne Toleranz gibt es nicht.
Post by Enrik Berkhan
Wenn man da keine
ASRC als Feinkorrektur macht, dann laufen bei Videos irgendwann Ton und
Bild asynchron.
Genau das wiederum passiert nicht, da wirklich jeder auch nur halbwegs
brauchbare Videoplayer das Bild nach dem Ton synchronisiert.
Allerdings kann das Problem auftreten, wenn man eine Live-Quelle
abspielt, die einen anderen physischen Schwingquarz als Zeitbasis hat,
also z.B. eine Internet-Stream oder eine Audiosignal, dass man
blöderweise digital per S/P-DIF einspeist. Dann können die Quelle und
Ziel mit der Zeit auseinander driften.
Aber wenn man so ein Problem hat, korrigiert man die Frequenz _ein
bisschen_ und nicht um fast einen Halbton, so dass die Wiedergabe eiert.
Die Quarz-Toleranzen bewegen sich üblicherweise in der Größenordnung
100ppm und weniger. Das würde niemand hören.
Post by Enrik Berkhan
Wenn die Audioausgabe aber über einen Daemon läuft, der seinerseits
ähnliches tut, dann kann das u.U. wohl ins Schwingen geraten. Insofern
sollte deine Gegenmaßnahme das Richtige[TM] bewirken.
Hmm, wäre möglich.
Post by Enrik Berkhan
Eine andere (eher unwahrscheinliche) Möglichkeit ist, dass irgendwo eine
andere Samplingrate gemeldet wird, als tatsächlich verwendet wird.
Laut Debug-Logs (VLC und PA) passt das alles. Das meiste Material sind
CD-RIPs mit 44,1 kHz. Und auf der Frequenz läuft auch das ALSA-Device,
solange PulseAudio keine Streams mischen muss.
Ich hatte eigentlich eher PulseAudio im Verdacht, zumal ich da noch per
module-ladspa Filter für Digital Room Correction in der Pipeline habe.
Aber das scheint hier unbeteiligt zu sein. Der Fehler trat auch ohne das
Modul auf.
Die direkte Wiedergabe von VLC auf ALSA habe ich aber nicht getestet.
Ich erinnere mich, dass - zu Zeiten, als ich mich mit pulseaudio (PA)
herumgeplagt habe - das insbesondere dann relevant wurde, wenn PA
versucht hat, mehrere Senken gleichzeitig zu bespielen, siehe z. B.
https://askubuntu.com/questions/78174/play-sound-through-two-or-more-outputs-devices
für weitere Verweise (module-combine-sink). Wenn das nicht Dein Ziel
ist, schalt auch das ab.

Allerdings ist pulseaudio wie so vieles, wo ein bestimmter
Entwicklername für Konzepte und Implementierung steht, Zeug, das vom
Anspruch sich selbst überfordert und dessen Implementierung in der
Praxis dann den Anspruch nicht einlöst.

Fedora hat diesen Digitalmüll inzwischen entsorgt und ist auf Pipewire
umgestiegen, das hier auf Fedora 36 bisher unauffällig war, allerdings
nehme ich sicherlich nur einen kleinen Teil des Funktionsumfangs (war
bei PA aber genauso - und das ist mir mehrfach auf die Nerven gegangen
mit kaputtem Mixing mehrerer Quellen und auch dem sprunghaften massiven
Ändern der Replayraten).

Loading...