Impostazione del dispositivo ALSA predefinito per Pulseaudio


8

Recentemente ho ottenuto una scheda audio / DAC esterna (Fiio E17) e attualmente sto provando a configurarlo correttamente sulla mia installazione di Ubuntu 12.04. Quando lo si collega tramite USB, viene immediatamente riconosciuto e si presenta come un nuovo dispositivo nelle impostazioni audio. Anche la riproduzione funziona per lo più bene (ad eccezione di alcuni problemi minori relativi al volume, che esulano dallo scopo di questa domanda).

Tuttavia, quando mplayerho provato a testare la riproduzione a 24 bit / 96 kHz riproducendo un file audio del genere , ho riscontrato un piccolo problema:

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)

Come si può vedere dall'output, anche se il file riprodotto contiene audio a 24 bit / 96 kHz, viene ricampionato a 16 bit prima della riproduzione. La riproduzione dello stesso file aplaymostra il motivo:

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

Tuttavia, /proc/asound/card1/stream0conferma che l'hardware supporta 24 bit:

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

A questo punto ho notato che nella scheda hardware delle impostazioni audio, posso selezionare due diversi profili per la scheda audio: Digital Stereo (IEC958) e Analog Stereo. Il passaggio tra questi due non comporta alcun cambiamento, per quanto posso dire.

Tuttavia, specificare il dispositivo ALSA (vale a dire, aplay -Dhw:1,0 sr003-02-2496.wavfunziona bene e riproduce il file senza ricampionamento). Ma poiché Pulseaudio mostra solo un dispositivo / sink Fiio nelle impostazioni audio, non sono sicuro di come direi a Pulseaudio di utilizzare il dispositivo ALSA hw:1,0. Aggiungendo load-module module-alsa-source device=hw:1,0ai /etc/pulse/default.parisultati l'interruzione di Pulseaudio module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.durante l'avvio.

Quindi, questa è l'introduzione, ecco le mie domande reali :

  • Come faccio a capire quale dispositivo ALSA Pulseaudio utilizza effettivamente quando seleziono Fiio E17 nelle impostazioni audio?
  • Come faccio a dire a Pulseaudio di utilizzare il dispositivo ALSA hw: 1,0 quando seleziono Fiio E17 nelle mie impostazioni audio?

Altre informazioni di debug (si spera utile):


Quali sono le righe di comando mplayere aplay?
CL.

@CL. Corro mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wave aplay -Dhw:1,0 sr003-02-2496.wavuso il dispositivo corretto, se è quello che mi stai chiedendo.
tmnt

Stavo chiedendo delle chiamate che non funzionavano. E vuoi usare PulseAudio o no?
CL.

@CL. Ah, scusa, quelle sono solo chiamate normali senza flag, cioè aplay sr003-02-2496.wave mplayer sr003-02-2496.wav. E sì, vorrei usare PulseAudio se possibile.
tmnt

Risposte:


8

Rispondere alle due domande:

È possibile selezionare il dispositivo predefinito in PulseAudio con una GUI come il controllo del volume GNOME, pavucontrol o dalla riga di comando usando pacmd set-default-sink.

Per impostazione predefinita, PulseAudio apre i dispositivi per 44,1 kHz o 48 kHz, qualunque sia il risultato di un minore sforzo di ricampionamento (quindi l'audio a 96 kHz normalmente porta l'apertura del dispositivo a 48 kHz. Inoltre, apriamo i dispositivi per S16LE per impostazione predefinita.

Ora hai due opzioni. Se vuoi solo riprodurre alcuni file nel loro formato nativo, paplay --passthrough <file>dovrebbe fare il lavoro per te. Puoi anche specificare quale dispositivo utilizzare.

L'altra opzione è fare in modo che PA usi 96/24 a livello globale. Puoi cambiarlo in /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le). Ciò comporterà tuttavia un maggiore utilizzo della CPU. Questa è una situazione un po 'sciocca, dovendo applicare la configurazione globale per tutti i dispositivi. Stiamo programmando di aggiungere la configurazione per dispositivo ad un certo punto.

Nota, dopo questo, dovresti semplicemente usare il back-end PulseAudio di mplayer piuttosto che far parlare mplayer con ALSA e poi ALSA con PulseAudio. Puoi farlo con mplayer -ao pulse ...e se vuoi impostarlo in modo permanente, aggiungi ao=pulsea ~/.mplayer/config.


Grazie mille per il vostro aiuto! pacmd set-default-sinkmi consente solo di impostare uno dei lavandini elencati da pacmd list-sinks, giusto? Anche se immagino che la seconda parte della tua risposta metta in dubbio questa domanda;) Quindi, se ti capisco correttamente, Pulseaudio non supporta il passaggio dinamico tra 24 e 16 bit? Dopo aver cambiato il mio default.conf, mplayer sembra ancora ricampionare tutto a 16 bit prima di passare a pulsare ( vedi qui ), è quello a causa di ciò che CL. descrive nella sua risposta?
tmnt

Oh, e paplaynon mi piacciono i miei file audio :) La riproduzione del file a 24 bit porta a un segfault Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.e la riproduzione di un file a 32 bit provoca persino l' arresto anomalo di Pulseaudio .
tmnt

4

Dopo l'aggiornamento a 13.10 Pulseaudio è passato a HDMI, probabilmente perché ho un monitor aggiuntivo collegato al mio laptop (Lenovo T430S) attraverso la mia porta mini-display. Il sito Web di archlinux ha fornito una risposta breve e semplice per ripristinare o impostare il valore predefinito:

  • accedi e cambia l'output predefinito in analogico

  • Correre

    $ aplay -l

e scopri che l'analogo è la scheda 0

  • Correre

    $ pacmd list

e trova la linea:

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

"output: analog-stereo + input: analog-stereo" è il nome del mio profilo, quindi aggiungi

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

in /etc/pulse/default.pa e salva

  • riavviare pulseaudio

2

Il formato di esempio utilizzato nell'interfaccia tra le applicazioni e PulseAudio non è sempre direttamente correlato al formato di esempio utilizzato da PulseAudio per accedere al dispositivo hardware.

S24_3LEnon è uno dei formati di applicazione supportati da PulseAudio (come mostrato aplaynell'output). Per consentire l'esecuzione di applicazioni con formati così insoliti con PulseAudio, aggiungi un plug-in che esegua la conversione automatica del formato se necessario per il dispositivo PCM predefinito nel tuo .asoundrc:

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

Grazie per il tuo aiuto, ma temo che questo non abbia cambiato nulla. Anche dopo aver aggiunto questo al mio .asoundrc, mplayeresegue ancora il downsampling dell'audio a 16 bit (ovvero l'output ha lo stesso aspetto di quello pubblicato nella mia domanda) e /proc/asound/card1/stream0mostra ancora l'altet set errato in uso. Se in realtà si è trattato di un problema con i formati supportati di PA, non dovrebbe mplayersottocampionare l'audio anche quando si specifica il dispositivo ALSA, poiché utilizza ancora Pulseaudio?
tmnt

Funziona aplayora? Questo sembra essere un bug in mplayer.
CL.

No, aplaycontinua a fallire con lo stesso output. Ho notato ora che impostando default-sample-format = s24-32lenel mio .pulse/daemon.confposso forzare PA ad utilizzare il dispositivo di output corretto. Tuttavia, mplayerricampiona ancora l'audio e aplaynon riesce ancora quando si tenta di riprodurre il file audio a 24 bit, quindi suppongo che questo non sia di aiuto.
tmnt

2

Solo una rapida soluzione ho scoperto usando Lubuntu Trusty Tahr con il mio Fiio E17 collegato tramite USB: mi chiedevo anche il bitrate, ecco perché ho trovato questo post qui. Ma dal momento che ascolto la musica su un netbook piuttosto vecchio, non volevo impostarlo su 96/24 per impostazione predefinita (la CPU non è la più veloce) Tuttavia, ciò che ha funzionato per me era usare VLC e specificare nelle impostazioni audio esperte per utilizzare il modulo ALSA per l'output, quindi utilizzare il seguente dispositivo di output: "Fiio USB DAC-E17, dispositivo hardware USB Audio Direct senza alcuna conversione"

In questo modo, sono stato in grado di trasmettere l'audio 96/24 su Fiio tramite USB quando volevo (mostra anche sul piccolo schermo di Fiio) - e non ho dovuto cambiare qualcosa di più fondamentale nel sistema operativo. Giocatori come audace o browser usano ancora l'uscita pulseaudio predefinita. A volte VLC afferma che il dispositivo è già in uso, quindi basta chiudere qualsiasi altro software come audace, che utilizza ad esempio l'uscita pulseaudio e dovrebbe funzionare.

saluti, Andi



1

Ecco la risposta corretta a questa domanda:

Da ArchWiki

Determinare il dispositivo hw ALSA che si desidera utilizzare. Quindi aggiungi questo al tuo file default.pa. (Cambia 0,0 per adattarlo al tuo dispositivo.)

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

1

L'aggiunta load-module module-alsa-source device=hw:1,0a /etc/pulse/default.paè l'approccio corretto. Tuttavia, i seguenti moduli devono essere scaricati per evitare conflitti di dispositivo (l' initialization failederrore che hai ricevuto):

  • Modulo-udev-detect
  • Modulo di rilevamento

Dai un'occhiata alle tue /etc/pulse/default.pae rimuovi le linee che contengono quei moduli. Inoltre, in questo caso i dispositivi non possono essere rilevati automaticamente, quindi si desidera caricare anche module-alsa-sinkper specificare manualmente un lavandino.


Ci sarebbe un conflitto di rilevazione (sink) di rilevamento dei conflitti se solo i dispositivi di acquisizione (sorgente) fossero caricati manualmente?
Lucas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.