Die Tonausgabe beginnt verzögert


10

Über SPDIF beginnt der hörbare Ton spät, z. B. im Dialogfeld "Testton" kann ich maximal "Links" hören, wenn die Stimme "Vorne Links" sagen soll.

Wenn ich pavucontrolgeöffnet habe (im Hintergrund), während ich auf den Test Sound klicke, startet er sofort.

Im Allgemeinen ist beim Starten einer Audio- / Mediendatei der Anfang nicht ausgegeben / hörbar. Optisch oder koaxial anschließen. Dies scheint nur Ubuntu 12.10 zu betreffen, war in 12.04 nicht der Fall, scheint in 13.04 nicht der Fall zu sein!

Von ubuntuusers.de ein bisschen Hilfe - einen nicht hörbaren Sinus spielen, um spdif am Leben zu erhalten:

apt-get install sox
play -n -c2 synth sin gain -100   # -c2 for two channels

Hardware auf einem ASRock 970 Extreme3 ​​(und GeForce 210):

$ cat /proc/asound/cards
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe200000 irq 16
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xfe080000 irq 25

$ cat /proc/asound/card0/codec* | grep Codec
Codec: Realtek ALC892

Einige pulseaudio -vAusgaben wurden in http://paste.ubuntu.com/5629082/ eingefügt.

Kann ich irgendwie von pulseaudio 2.1 upgraden?

Live-Ausgabe von Ubuntu 13.04, eingefügt in http://paste.ubuntu.com/5630475/ - tatsächlich beginnt hier nur der allererste Aufruf des Sounds (oder nach einer langen Benutzerpause?) Verzögert, dh nach "... Left", "Front Right" ist zu hören, während es in 12.10 immer "... Left", "... Right" ist.


1
Können Sie weitere Informationen über die Soundkarte und deren Anschluss geben? Kannst du es mit jackd versuchen, wenn dies auch der Fall ist? weil es möglicherweise mit Pulse Audio und nicht mit der Soundkarte zusammenhängt.
Bis zum

Realtek ALC892 scheint viele Treffer in Google zu bieten, um durch: /
Typ

Die Installation des Treibers vom Hersteller wie in community.linuxmint.com/tutorial/view/1236 hat ebenfalls nicht geholfen. eine Zeile liest: {.id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662}
Typ

Antworten:


26

Ich weiß, dass ich einen alten Thread wiederbeleben werde, aber ich habe eine einfach zu funktionierende Lösung gefunden, die das Problem behebt.

Von: https://wiki.archlinux.org/index.php/PulseAudio

Um das Laden des Moduls "Suspend-on-Idle" zu deaktivieren, kommentieren Sie die folgende Zeile in der verwendeten Konfigurationsdatei aus (~ / .config / puls / default.pa oder /etc/pulse/default.pa):

### Automatically suspend sinks/sources that become idle for too long
# load-module module-suspend-on-idle

Starten Sie PulseAudio schließlich neu, um die Änderungen zu übernehmen.


Dies war auch die Antwort für mich, aber es hat einen Nachteil. Ich habe einige Audioprogramme, die ALSA verwenden, um ein bestimmtes Format direkt an einen Heimkino-Receiver zum Decodieren zu übergeben, anstatt das manchmal zweifelhafte Resampling von PA zu verwenden. Dies funktioniert aufgrund dieser Suspend-Funktion problemlos.
Moilleadóir

3

Es hört sich so an, als würde die Energieverwaltung verhindern, dass die Soundkarte den ersten Audioausschnitt ausgibt. Unter http://wiki.gentoo.org/wiki/Power_management/Soundcard lauten die wichtigen Elemente wie folgt:

Laufzeit-Tuning

Sie können den Treiber im sysfs-Dateisystem unter / sys / module / snd_hda_intel / parameters optimieren

Der Regler power_save_controller steuert, ob der Energiesparmodus aktiviert ist. Es ist durch die Kernel-Option voreingestellt ... stromsparend ....

Der power_save-Regler stellt das Timeout in Sekunden ein. Es ist durch die Kernel-Option voreingestellt. Standard-Timeout ...

pm-utils

pm-utils enthält ein Skript zum Aktivieren des Energiesparmodus im Akkubetrieb und zum Deaktivieren im Wechselstrom. Es überschreibt die Standardwerte des Kernels.

Wenn Sie pm-utils verwenden, diese Art der Regulierung jedoch nicht möchten, deaktivieren Sie das Skript: root # touch /etc/pm/power.d/intel-audio-powersave

Aus dem obigen Text sind folgende Dinge zu versuchen:

  1. Führen Sie im Terminal Folgendes aus und versuchen Sie erneut, Audio abzuspielen:

    echo N | sudo tee /sys/module/snd_hda_intel/parameters/power_save_controller
    

    Wenn Audio in Ordnung ist, müssen Sie es dauerhaft machen, indem Sie eine neue Datei in /etc/modprobe.d/ mit folgendem Inhalt hinzufügen:

    options snd_hda_intel power-saving=N
    
  2. ausführen sudo touch /etc/pm/power.d/intel-audio-powersaveund neu starten

    Wenn das Update funktioniert hat, sollte Audio normal abgespielt werden. Wenn nicht, entfernen Sie die Datei erneut:

    sudo rm /etc/pm/power.d/intel-audio-powersave
    

Wenn beides nicht funktioniert, habe ich keine Ideen mehr :-).


Super Antwort, vielen Dank! Leider noch keine Änderung.
Typ

Welche Art von "neuer Datei" soll ich in etc / modprobe.d / erstellen?
Bhikkhu Subhuti

1

Dies ist ein allgemeines Problem mit SPDIF / Digitalausgang und dem Empfänger, der das Signal verarbeitet usw. Wenn kein Signal vorhanden ist, wechselt der Empfänger in einen Leerlaufmodus. Es dauert einige bis einige hundert Millisekunden, bis das Signal abgespielt wird. Die einzige Möglichkeit, dies zu beheben, besteht darin, dass Ihr SPDIF-Ausgang ständig EINIGES Signal sendet, wodurch die Empfängerverarbeitung jederzeit am Leben bleibt. Im Moment habe ich dieses Problem in Windows mit einem winzigen Dienstprogramm gelöst, das ein Typ in .NET geschrieben hat und das jederzeit ein Nullsignal ausgibt. Er nennt es SPDIF Keep-Alive. Dadurch fließt das Signal weiter und mein Empfänger hört ständig zu. Ich habe noch keinen Weg gesehen, dies für Linux zu tun, aber ich würde mir vorstellen, dass die Unterstützung, um so etwas zu erstellen, ÜBERALL ist. Hoffentlich hat dies jemandem eine Idee gegeben, wonach er suchen oder wo er als nächstes suchen soll! -K9SPY

Digitales Audio Keep-Alive Keep-Alive SPDIF Keep-Alive Keep-Alive TOSLINK Keep-Alive Keep-Alive-Time-Outs In den Ruhezustand wird die SPDIF-Soundverzögerung abgeschaltet


1
  1. Suchen Sie nach PulseAudio-Konfigurationsdateien, die load-module module-suspend-on-idleZeilen enthalten:

    neatsoft@desktop:~$ grep module-suspend-on-idle /etc/pulse/*
    /etc/pulse/default.pa:load-module module-suspend-on-idle
    /etc/pulse/system.pa:load-module module-suspend-on-idle
    
  2. Kommentieren Sie diese Zeilen aus.

  3. Starten Sie PulseAudio neu, um die Änderungen zu übernehmen:

    pulseaudio -k

Gerade auf Ubuntu 17.04 getestet und es funktioniert gut.


Dies funktionierte für mich am 19.04, mit Ausnahme des Neustartteils. Ich musste neu starten, um pulseaudio neu zu starten, da pulseaudio -kich einige Fehler hatte.
Muclux

0

Die akzeptierte Antwort über das Nichtladenmodule-suspend-on-idle behebt das Problem für mich nicht. Um dies zu "beheben", musste ich einen Befehl zum kontinuierlichen Schweigen im Hintergrund laufen lassen, siehe UPDATE 2 der folgenden Frage:

Und ich habe dieses Problem sowohl in den internen Lautsprechern als auch in den PCs des Laptops über HDMI und Kopfhörer, ohne SPDIF, unter den neuesten ArchLinux- und Ubuntu-Versionen reproduziert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.