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 aplay
zeigt 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/stream0
Bestä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.wav
funktioniert 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,0
zu /etc/pulse/default.pa
fü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:
- Die Ausgabe von
aplay -L
- Die Ausgabe von
aplay -l
- Die Ausgabe von
pacmd list-sinks
- Und schließlich, falls es relevant ist, meine .asoundrc
quelle
mplayer
undaplay
Befehlszeilen?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
undaplay -Dhw:1,0 sr003-02-2496.wav
benutze das richtige Gerät, wenn du das fragst.aplay sr003-02-2496.wav
undmplayer sr003-02-2496.wav
. Und ja, wenn möglich möchte ich PulseAudio verwenden.Antworten:
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 Sieao=pulse
zu~/.mplayer/config
.quelle
pacmd set-default-sink
lässt mich nur eine der von aufgelisteten Spülen einstellenpacmd 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 mydefault.conf
scheint 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?paplay
scheint meine Audiodateien nicht zu mögen :) Das Abspielen der 24-Bit-Datei führt zu einem Segfault mitCode 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 .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:
"Ausgang: Analog-Stereo + Eingang: Analog-Stereo" ist mein Profilname, also hinzufügen
in /etc/pulse/default.pa und speichern
quelle
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_3LE
ist nicht eines der von PulseAudio unterstützten Anwendungsformate (wie in deraplay
Ausgabe 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
:quelle
.asoundrc
wirdmplayer
das Audio immer noch auf 16 Bit/proc/asound/card1/stream0
heruntergesampelt (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, solltemplayer
das Audio nicht auch bei Angabe des ALSA-Geräts heruntergesampelt werden, da es immer noch Pulseaudio verwendet?aplay
jetzt? Dies scheint ein Fehler zu seinmplayer
.aplay
schlägt immer noch mit derselben Ausgabe fehl. Ich habe jetzt bemerkt, dass ich durch Einstellendefault-sample-format = s24-32le
in meinem.pulse/daemon.conf
PA zwingen kann, das richtige Ausgabegerät zu verwenden. Dasmplayer
Audio wird jedoch weiterhin neu abgetastet undaplay
schlägt immer noch fehl, wenn versucht wird, die 24-Bit-Audiodatei abzuspielen. Ich denke, dies hilft auch nicht.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
quelle
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.)
quelle
Hinzufügen
load-module module-alsa-source device=hw:1,0
zu/etc/pulse/default.pa
ist der richtige Ansatz. Die folgenden Module müssen jedoch entladen werden, um Gerätekonflikte zu vermeiden (derinitialization failed
Fehler, den Sie erhalten haben):Schauen Sie sich Ihre genau an
/etc/pulse/default.pa
und entfernen Sie die Zeilen, die diese Module enthalten. In diesem Fall können Geräte auch nicht automatisch erkannt werden. Sie möchten also ladenmodule-alsa-sink
, um eine Senke auch manuell anzugeben.quelle