J'ai récemment obtenu une carte son / DAC externe (Fiio E17) et j'essaie actuellement de la configurer correctement sur mon installation Ubuntu 12.04. Lorsque vous le branchez via USB, il est immédiatement reconnu et apparaît comme un nouvel appareil dans les paramètres audio. La lecture fonctionne également très bien (à l'exception de quelques problèmes mineurs liés au volume, qui dépassent le cadre de cette question).
Cependant, lorsque mplayer
j'ai essayé de tester la lecture 24 bits / 96 kHz en lisant un tel fichier audio avec , j'ai rencontré un petit problème:
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)
Comme le montre la sortie, même si le fichier lu contient de l'audio 24 bits / 96 kHz, il est rééchantillonné à 16 bits avant la lecture. La lecture du même fichier avec aplay
montre la raison:
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
Cependant, /proc/asound/card1/stream0
confirme que le matériel prend en charge 24 bits:
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
À ce stade, j'ai remarqué que dans l'onglet matériel des paramètres audio, je peux sélectionner deux profils différents pour la carte son: stéréo numérique (IEC958) et stéréo analogique. Pour autant que je sache, le basculement entre ces deux n'entraîne aucun changement.
La spécification du périphérique ALSA aide cependant (c'est-à-dire qu'il aplay -Dhw:1,0 sr003-02-2496.wav
fonctionne très bien et lit le fichier sans rééchantillonnage). Mais comme Pulseaudio n'affiche qu'un seul appareil / récepteur Fiio dans les paramètres sonores, je ne sais pas comment je dirais à Pulseaudio d'utiliser l'appareil ALSA hw:1,0
. Ajout load-module module-alsa-source device=hw:1,0
aux /etc/pulse/default.pa
résultats dans Pulseaudio avortant avec module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.
au démarrage.
Voilà donc l'introduction, voici mes vraies questions :
- Comment savoir quel appareil ALSA Pulseaudio utilise réellement lorsque je sélectionne le Fiio E17 dans les paramètres sonores?
- Comment dire à Pulseaudio d'utiliser le périphérique ALSA hw: 1,0 lors de la sélection du Fiio E17 dans mes paramètres sonores?
Quelques informations de débogage supplémentaires (je l'espère utiles):
- La sortie de
aplay -L
- La sortie de
aplay -l
- La sortie de
pacmd list-sinks
- Et enfin, au cas où cela serait pertinent, mon .asoundrc
la source
mplayer
etaplay
?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
etaplay -Dhw:1,0 sr003-02-2496.wav
utilise le bon appareil, si c'est ce que vous demandez.aplay sr003-02-2496.wav
etmplayer sr003-02-2496.wav
. Et oui, je voudrais utiliser PulseAudio si possible.Réponses:
Répondre aux deux questions:
Vous pouvez sélectionner le périphérique par défaut dans PulseAudio avec une interface graphique comme le contrôle du volume GNOME, pavucontrol ou à partir de la ligne de commande à l'aide de
pacmd set-default-sink
.Par défaut, PulseAudio ouvre les appareils à 44,1 kHz ou 48 kHz, ce qui conduit à un effort de rééchantillonnage plus faible (donc l'audio à 96 kHz entraînerait généralement l'ouverture de l'appareil à 48 kHz. De plus, nous ouvrons les appareils pour S16LE par défaut.
Maintenant, vous avez deux options. Si vous voulez simplement lire quelques fichiers dans leur format natif,
paplay --passthrough <file>
devrait faire le travail pour vous. Vous pouvez même spécifier quel appareil utiliser.L'autre option est de faire en sorte que PA utilise globalement 96/24. Vous pouvez changer cela en
/etc/pulse/default.conf
(alternate-sample-rate = 96000
,default-sample-format=s24-32le
). Cela va conduire à une plus grande utilisation du processeur, bien que. C'est une situation un peu idiote, devoir appliquer une configuration globale pour tous les appareils. Nous prévoyons d'ajouter une configuration par périphérique à un moment donné.Notez qu'après cela, vous devez simplement utiliser le backend PulseAudio de mplayer plutôt que de laisser mplayer parler à ALSA puis ALSA à PulseAudio. Vous pouvez le faire avec
mplayer -ao pulse ...
et si vous souhaitez le configurer de façon permanente, ajoutezao=pulse
à~/.mplayer/config
.la source
pacmd set-default-sink
me permet seulement de définir l'un des éviers répertoriés parpacmd list-sinks
bien, non? Bien que je suppose que la deuxième partie de votre réponse rend cette question théorique de toute façon;) Donc, si je vous comprends bien, Pulseaudio ne prend pas en charge la commutation dynamique entre 24 et 16 bits? Après avoir changé mondefault.conf
, mplayer semble toujours tout rééchantillonner en 16 bits avant de le passer à pulse ( voir ici ), c'est à cause de ce que CL. décrit dans sa réponse?paplay
ne semble pas aimer mes fichiers audio :) La lecture du fichier 24 bits conduit à un défaut de configurationCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.
et la lecture d'un fichier 32 bits bloque même Pulseaudio .Après la mise à jour vers 13.10, Pulseaudio est passé par défaut à HDMI, probablement parce que j'ai un moniteur supplémentaire connecté à mon ordinateur portable (Lenovo T430S) via mon port mini-écran. Le site Web archlinux a fourni une réponse douce et courte pour réinitialiser ou définir la valeur par défaut:
connectez-vous et changez la sortie par défaut en analogique
Courir
$ aplay -l
et trouver que l'analogique est la carte 0
Courir
$ pacmd list
et trouvez la ligne:
"sortie: analogique-stéréo + entrée: analogique-stéréo" est mon nom de profil, alors ajoutez
dans /etc/pulse/default.pa et enregistrez
la source
Le format d'exemple utilisé dans l'interface entre les applications et PulseAudio n'est pas toujours directement lié au format d'exemple que PulseAudio utilise pour accéder au périphérique matériel.
S24_3LE
n'est pas l'un des formats d'application pris en charge par PulseAudio (comme indiqué dans laaplay
sortie). Pour permettre aux applications avec ces formats inhabituels de s'exécuter avec PulseAudio, ajoutez un plugin qui effectue la conversion de format automatique si vous avez besoin du périphérique PCM par défaut dans votre.asoundrc
:la source
.asoundrc
, sous-mplayer
échantillonne toujours l'audio à 16 bits (c'est-à-dire que la sortie ressemble à celle publiée dans ma question) et/proc/asound/card1/stream0
montre toujours le mauvais altset utilisé. S'il s'agissait en fait d'un problème avec les formats pris en charge par PA, ne devrait-il pas sous-mplayer
échantillonner l'audio même lors de la spécification du périphérique ALSA, car il utilise toujours Pulseaudio?aplay
marche maintenant? Cela semble être un bogue dansmplayer
.aplay
échoue toujours avec la même sortie. J'ai remarqué maintenant qu'en configurantdefault-sample-format = s24-32le
mon,.pulse/daemon.conf
je peux forcer PA à utiliser le bon périphérique de sortie. Cependant,mplayer
rééchantillonne toujours l'audio etaplay
échoue toujours lorsque vous essayez de lire le fichier audio 24 bits, donc je suppose que cela n'aide pas non plus.Juste une solution rapide, j'ai découvert en utilisant Lubuntu Trusty Tahr avec mon Fiio E17 connecté via USB: je me posais également des questions sur le débit binaire, c'est pourquoi j'ai trouvé ces articles ici. Mais comme j'écoute de la musique sur un Netbook plutôt ancien, je ne voulais pas le régler sur 96/24 par défaut (le processeur n'est pas le plus rapide). Cependant, ce qui a fonctionné pour moi, c'est d'utiliser VLC et de le spécifier dans les paramètres audio experts. pour utiliser le module ALSA pour la sortie, puis utilisez le périphérique de sortie suivant: "Fiio USB DAC-E17, périphérique matériel USB Audio Direct sans aucune conversion"
De cette façon, j'ai pu émettre du son 96/24 sur le Fiio via USB quand je le voulais (s'affiche également sur le petit écran du Fiio) - et je n'ai pas eu à changer quelque chose de plus fondamental dans le système d'exploitation. Les joueurs comme audacieux ou les navigateurs utilisent toujours la sortie pulseaudio par défaut. Parfois, VLC dit que l'appareil est déjà utilisé - fermez simplement tout autre logiciel comme audacieux, qui utilise par exemple la sortie pulseaudio, et cela devrait fonctionner.
Cordialement, Andi
la source
Voici la bonne réponse à cette question:
Depuis ArchWiki
Déterminez le périphérique ALSA hw que vous souhaitez utiliser. Ajoutez ensuite ceci à votre fichier default.pa. (Modifiez 0,0 pour l'adapter à votre appareil.)
la source
Ajouter
load-module module-alsa-source device=hw:1,0
à/etc/pulse/default.pa
est la bonne approche. Cependant, les modules suivants doivent être déchargés pour éviter les conflits de périphériques (l'initialization failed
erreur que vous avez):Examinez attentivement vos
/etc/pulse/default.pa
lignes et supprimez ces modules. De plus, dans ce cas, les périphériques ne peuvent pas être détectés automatiquement, vous devez donc chargermodule-alsa-sink
pour spécifier un récepteur manuellement également.la source