Festlegen des Standard-ALSA-Geräts für Pulseaudio


8

Ich habe kürzlich eine externe Soundkarte / einen externen DAC (Fiio E17) erhalten und versuche derzeit, diese in meiner Ubuntu 12.04-Installation ordnungsgemäß zu konfigurieren. Wenn Sie es über USB anschließen, wird es sofort erkannt und in den Audioeinstellungen als neues Gerät angezeigt. Die Wiedergabe funktioniert größtenteils auch einwandfrei (mit Ausnahme einiger kleinerer Probleme im Zusammenhang mit der Lautstärke, die über den Rahmen dieser Frage hinausgehen).

Beim Versuch, die 24-Bit / 96-kHz-Wiedergabe durch Abspielen einer solchen Audiodatei zu testen mplayer, ist jedoch ein kleines Problem aufgetreten:

Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 2 ch, s24le, 4608.0 kbit/100.00% (ratio: 576000->576000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 96000Hz 2ch s16le (2 bytes per sample)

Wie aus der Ausgabe ersichtlich ist, wird die abgespielte Datei, obwohl sie 24 Bit / 96 kHz Audio enthält, vor der Wiedergabe auf 16 Bit neu abgetastet. Das Abspielen derselben Datei mit aplayzeigt den Grund:

Playing WAVE 'sr003-02-2496.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
aplay: set_params:1081: Sample format non available
Available formats:
- U8
- S16_LE
- S16_BE
- S32_LE
- S32_BE
- FLOAT_LE
- FLOAT_BE
- MU_LAW
- A_LAW

/proc/asound/card1/stream0Bestätigt jedoch, dass die Hardware 24 Bit unterstützt:

FiiO FiiO USB DAC-E17 at usb-0000:00:1a.0-1.1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 3
    Altset = 1
    Packet Size = 388
    Momentary freq = 44100 Hz (0x2c.199a)
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000
  Interface 3
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000

Zu diesem Zeitpunkt habe ich festgestellt, dass ich auf der Registerkarte Hardware der Soundeinstellungen zwei verschiedene Profile für die Soundkarte auswählen kann: Digital Stereo (IEC958) und Analog Stereo. Der Wechsel zwischen diesen beiden führt jedoch, soweit ich das beurteilen kann, zu keinen Änderungen.

Die Angabe des ALSA-Geräts hilft jedoch (das heißt, es aplay -Dhw:1,0 sr003-02-2496.wavfunktioniert einwandfrei und spielt die Datei ohne erneutes Abtasten ab). Da Pulseaudio in den Soundeinstellungen nur ein Fiio-Gerät / eine Senke anzeigt, bin ich mir nicht sicher, wie ich Pulseaudio anweisen soll, ein ALSA-Gerät zu verwenden hw:1,0. Das Hinzufügen load-module module-alsa-source device=hw:1,0zu /etc/pulse/default.paführt dazu, dass Pulseaudio module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.während des Startvorgangs abgebrochen wird .

Das ist also die Einführung, hier sind meine eigentlichen Fragen :

  • Wie finde ich heraus, welches ALSA-Gerät Pulseaudio tatsächlich verwendet, wenn ich den Fiio E17 in den Soundeinstellungen auswähle?
  • Wie kann ich Pulseaudio anweisen, das ALSA-Gerät hw: 1,0 zu verwenden, wenn ich den Fiio E17 in meinen Soundeinstellungen auswähle?

Weitere (hoffentlich hilfreiche) Debug-Informationen:


Was sind die mplayerund aplayBefehlszeilen?
CL.

@CL. Ich laufe mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wavund aplay -Dhw:1,0 sr003-02-2496.wavbenutze das richtige Gerät, wenn du das fragst.
tmnt

Ich fragte nach den Anrufen, die nicht funktionierten. Und möchten Sie PulseAudio verwenden oder nicht?
CL.

@CL. Ah, sorry, das sind nur normale Anrufe ohne Flaggen, das heißt aplay sr003-02-2496.wavund mplayer sr003-02-2496.wav. Und ja, wenn möglich möchte ich PulseAudio verwenden.
tmnt

Antworten:


8

Beantwortung der beiden Fragen:

Sie können das Standardgerät in PulseAudio mit einer grafischen Benutzeroberfläche wie der GNOME-Lautstärkeregelung, pavucontrol oder über die Befehlszeile auswählen pacmd set-default-sink.

Standardmäßig öffnet PulseAudio Geräte für 44,1 kHz oder 48 kHz, je nachdem, was zu einem geringeren Resampling-Aufwand führt (96 kHz Audio führt normalerweise dazu, dass das Gerät mit 48 kHz geöffnet wird. Außerdem öffnen wir die Geräte standardmäßig für S16LE.

Jetzt haben Sie zwei Möglichkeiten. Wenn Sie nur ein paar Dateien im nativen Format abspielen möchten, paplay --passthrough <file>sollten Sie den Job für Sie erledigen. Sie können sogar angeben, welches Gerät verwendet werden soll.

Die andere Möglichkeit besteht darin, PA global 96/24 verwenden zu lassen. Sie können dies in /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le) ändern . Dies führt jedoch zu einer höheren CPU-Auslastung. Dies ist eine etwas alberne Situation, da für alle Geräte eine globale Konfiguration angewendet werden muss. Wir planen, irgendwann eine Konfiguration pro Gerät hinzuzufügen.

Beachten Sie, dass Sie danach nur das PulseAudio-Backend von mplayer verwenden sollten, anstatt mplayer mit ALSA und dann ALSA mit PulseAudio sprechen zu lassen. Sie können das tun, mit mplayer -ao pulse ...und wenn Sie wollen , dass es dauerhaft einzurichten, fügen Sie ao=pulsezu ~/.mplayer/config.


Vielen Dank für deine Hilfe! pacmd set-default-sinklässt mich nur eine der von aufgelisteten Spülen einstellen pacmd list-sinks, oder? Obwohl ich denke, dass der zweite Teil Ihrer Antwort diese Frage sowieso in Frage stellt;) Wenn ich Sie also richtig verstehe, unterstützt Pulseaudio das dynamische Umschalten zwischen 24 und 16 Bit nicht? Nach dem Ändern von my default.confscheint mplayer immer noch alles auf 16 Bit neu abzutasten, bevor es an Puls übergeben wird ( siehe hier ). Das liegt an CL. beschreibt in seiner Antwort?
tmnt

Oh, und paplayscheint meine Audiodateien nicht zu mögen :) Das Abspielen der 24-Bit-Datei führt zu einem Segfault mit Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting., und das Abspielen einer 32-Bit-Datei stürzt sogar Pulseaudio ab .
14.

4

Nach dem Update auf 13.10 wurde Pulseaudio standardmäßig auf HDMI eingestellt, wahrscheinlich weil ich über meinen Mini-Display-Anschluss einen zusätzlichen Monitor an meinen Laptop (Lenovo T430S) angeschlossen habe. Die Archlinux-Website bot eine süße und kurze Antwort zum Zurücksetzen oder Festlegen der Standardeinstellungen:

  • Melden Sie sich an und ändern Sie die Standardausgabe in analog

  • Lauf

    $ aplay -l

und finde, dass analog Karte 0 ist

  • Lauf

    $ pacmd Liste

und finde die Zeile:

active profile: <output:analog-stereo+input:analog-stereo>

"Ausgang: Analog-Stereo + Eingang: Analog-Stereo" ist mein Profilname, also hinzufügen

set-card-profile 0 output:analog-stereo+input:analog-stereo

in /etc/pulse/default.pa und speichern

  • Starten Sie pulseaudio neu

2

Das in der Schnittstelle zwischen Anwendungen und PulseAudio verwendete Beispielformat steht nicht immer in direktem Zusammenhang mit dem Beispielformat, das PulseAudio für den Zugriff auf das Hardwaregerät verwendet.

S24_3LEist nicht eines der von PulseAudio unterstützten Anwendungsformate (wie in der aplayAusgabe gezeigt). Fügen Sie ein Plugin hinzu, das die automatische Formatkonvertierung bei Bedarf für das Standard-PCM-Gerät in Ihrem Computer ausführt, damit Anwendungen mit solchen ungewöhnlichen Formaten mit PulseAudio ausgeführt werden können .asoundrc:

pcm.!default {
    type linear
    slave.pcm pulse
}

Vielen Dank für Ihre Hilfe, aber ich fürchte, das hat nichts geändert. Auch nach dem Hinzufügen zu my .asoundrcwird mplayerdas Audio immer noch auf 16 Bit /proc/asound/card1/stream0heruntergesampelt (dh die Ausgabe sieht genauso aus wie die in meiner Frage angegebene) und zeigt immer noch das falsche verwendete Altset an. Wenn es tatsächlich ein Problem mit den von PA unterstützten Formaten war, sollte mplayerdas Audio nicht auch bei Angabe des ALSA-Geräts heruntergesampelt werden, da es immer noch Pulseaudio verwendet?
tmnt

Funktioniert aplayjetzt? Dies scheint ein Fehler zu sein mplayer.
CL.

Nein, aplayschlägt immer noch mit derselben Ausgabe fehl. Ich habe jetzt bemerkt, dass ich durch Einstellen default-sample-format = s24-32lein meinem .pulse/daemon.confPA zwingen kann, das richtige Ausgabegerät zu verwenden. Das mplayerAudio wird jedoch weiterhin neu abgetastet und aplayschlägt immer noch fehl, wenn versucht wird, die 24-Bit-Audiodatei abzuspielen. Ich denke, dies hilft auch nicht.
tmnt

2

Nur eine kurze Problemumgehung Ich habe herausgefunden, dass ich Lubuntu Trusty Tahr mit meinem über USB angeschlossenen Fiio E17 verwende: Ich habe mich auch über die Bitrate gewundert, deshalb habe ich diese Beiträge hier gefunden. Da ich jedoch Musik auf einem ziemlich alten Netbook höre, wollte ich sie nicht standardmäßig auf 96/24 einstellen (CPU ist nicht die schnellste). Für mich funktionierte jedoch die Verwendung von VLC und die Angabe in den Experten-Audioeinstellungen Verwenden Sie das ALSA-Modul für die Ausgabe und verwenden Sie dann das folgende Ausgabegerät: "Fiio USB DAC-E17, USB Audio Direct-Hardwaregerät ohne Konvertierungen"

Auf diese Weise konnte ich 96/24 Sound über USB an das Fiio ausgeben, wenn ich wollte (wird auch auf dem kleinen Bildschirm des Fiio angezeigt) - und ich musste im Betriebssystem nichts grundlegenderes ändern. Spieler wie kühn oder die Browser verwenden weiterhin die Standard-Pulseaudio-Ausgabe. Manchmal sagt VLC, dass das Gerät bereits verwendet wird - schließen Sie dann einfach jede andere Software wie kühn, die z. B. den Pulseaudio-Ausgang verwendet, und es sollte funktionieren.

Grüße, Andi



1

Hier ist die richtige Antwort auf diese Frage:

Aus ArchWiki

Bestimmen Sie das ALSA hw-Gerät, das Sie verwenden möchten. Fügen Sie dies dann Ihrer Datei default.pa hinzu. (Ändern Sie 0,0 entsprechend Ihrem Gerät.)

load-module module-alsa-sink device=hw:0,0

1

Hinzufügen load-module module-alsa-source device=hw:1,0zu /etc/pulse/default.paist der richtige Ansatz. Die folgenden Module müssen jedoch entladen werden, um Gerätekonflikte zu vermeiden (der initialization failedFehler, den Sie erhalten haben):

  • Modul-udev-erkennen
  • Modulerkennung

Schauen Sie sich Ihre genau an /etc/pulse/default.paund entfernen Sie die Zeilen, die diese Module enthalten. In diesem Fall können Geräte auch nicht automatisch erkannt werden. Sie möchten also laden module-alsa-sink, um eine Senke auch manuell anzugeben.


Würde es eine Konflikterkennungswiedergabe (Senke) geben, wenn nur Erfassungsgeräte (Quellgeräte) manuell geladen würden?
Lucas
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.