10
votes

ALSA: Ouvrez un périphérique PCM en mode partagé

Je veux lire des données audio à l'aide d'ALSA sur un périphérique PCM. Comme exemple, j'ai téléchargé Cet exemple d'exemple et exécutez-le dans mon Pc. Cela fonctionne bien lorsque aucun autre processus n'utilise actuellement la carte son. Mais cela ne joue rien lorsque un autre processus utilise le périphérique audio (c'est-à-dire des chansons de jeu multimédia) et indique la suite d'erreur -

Playback open error: Device or resource busy


0 commentaires

5 Réponses :


1
votes

Vérifiez le fichier / dev / sndstat (si vous avez la couche de compatibilité OSS activée). Il devrait énumérer des périphériques audio qui correspondent aux périphériques ALSA de votre système. Et vous pouvez également vérifier / procéder / asz-asound / périphériques pour obtenir des fonctionnalités de chaque périphérique.

Essayez l'accès à différents périphériques de lecture (dans votre exemple, c'est "PLUGHW: 0,0" ouvert) en choisissant des noms différents pour snd_pcm_open (): Cela vient de ici :

pluiw: carte, appareil . Les deux ont comme paramètres la carte (chaîne d'identité ou numérique index), appareil et éventuellement sous-dimensionné du matériel à accéder.


1 commentaires

Non, je n'ai pas la couche de compatibilité OSS activée et je ne veux pas vraiment compter sur elle. J'ai également vérifié / Proc / Asound / Devices et a vu la liste des périphériques là-bas (je peux récupérer cette liste par programmation par programme). Je peux également accéder à différents périphériques de lecture. Mais aucun de ceux-ci n'est vraiment question ici. Je voulais savoir si je peux ouvrir un seul appareil en mode partagé.



1
votes

Peut-être que vous pourriez utiliser Jack: http://jackaudio.org/


0 commentaires

3
votes

Je n'ai pas pu trouver un moyen de partager un périphérique entre plusieurs processus. J'ai essayé d'utiliser le plugin dmix pour combiner plusieurs flux de lecture à l'aide du fichier .asoundrc de la configuration, mais cela n'a pas fonctionné pour une raison quelconque. J'ai essayé d'utiliser le périphérique par défaut de ma carte son, mais cela n'a pas fonctionné aussi. Selon une recommandation dans la liste de diffusion ALSA, j'ai essayé d'ouvrir le périphérique par défaut à l'aide de Par défaut: Carte = x comme paramètre Nom du périphérique sur la fonction SND_PCM_OPEN Fonction qui donne lieu à un Dispositif non trouvé erreur dans mon système. Apparemment, il n'y a aucun moyen de le faire (si quelqu'un peut trouver un moyen, veuillez mettre à jour cette réponse).

Plutôt que d'utiliser ALSA, j'ai utilisé pulseaudio ensuite qui a résolu mon problème.


1 commentaires

Merci, passez d'Alsa à PulseAudio dans mes paramètres de jeu de médias travaillés!



2
votes

Le problème avec l'ALSA à l'aise, alors l'absence d'un plug-in mélangeur inséré dans la sortie par défaut. Dans les versions récentes d'ALSA, cela n'arrive plus que DMIX Plugin est désormais inclus dans le chemin de sortie par défaut.

(Vous pouvez recréer la carte son partagée problème pour vous-même si vous vous déconnectez avec ~ / .asoundrc ou si vous contournez le mélangeur en indiquant l'application d'utiliser directement le matériel Branchez. Notez que certaines applications, telles que la prise, vous essayeront d'utiliser directement le matériel, sinon de faire autrement.)

avec pulseaudio, vous utilisez toujours ALSA comme backend, vous venez d'ajouter une couche avec un mélangeur (et une tonne d'autres choses que vous ne voulez probablement pas savoir). Jack ferait exactement le même travail pour vous.

De nos jours, le plugin DMIX d'ALSA le fera pour vous, afin que vous puissiez vous débarrasser du middleware tel que des pulseudios et des vérins jusqu'à ce que vous ayez vraiment besoin des fonctions de système sonore non basique fournies.

Pour référence, recherchez Documentation .ASOndRC .


0 commentaires

0
votes

J'ai eu ce problème récemment avec audacieux et j'ai réussi à le réparer avec audacieux, alors je pensais que je partagerais ce que j'ai fait au cas où elle a mis la lumière sur les problèmes des autres personnes.

Les symptômes: P>

Si j'ai Firefox ouvert avec une onglet YouTube Ouvrir (pas même en cours d'exécution), alors quand j'essaie de jouer de la musique dans l'audace, je ne peux pas. Je reçois cette erreur: p>

PCM Device: sysdefault: CARD=Generic - HD-Audio Generic, Generic Analog Default Audio Device
Mixer Device: hw: CARD=Generic - HD-Audio Generic Direct control device
Mixer Element: Master


0 commentaires