Comment créer un périphérique de carte son factice dans un serveur Linux?


20

Je veux exécuter un programme Linux qui nécessite une carte son, sur un serveur, qui n'a pas de carte son. Est-il possible de créer une carte son factice? Je ne connais absolument pas les internes du système audio Linux. Veuillez me diriger dans la bonne direction.

J'ai suivi cet exemple: http://alsa.opensrc.org/.asoundrc mais cela n'a pas fonctionné.

PS: Il y a une question similaire: comment créer un périphérique audio virtuel sous Linux? . Mais cela est totalement différent dans le contexte où l'utilisateur crée un alias vers une carte son déjà disponible.


Edit:
Je veux qu'un périphérique factice soit créé dans / dev / .. afin que toute application qui a besoin d'un périphérique audio le trouve.
Je ne sais absolument pas comment fonctionne alsa. J'ai donc simplement suivi l'exemple. J'ai créé /etc/asound.conf avec:

pcm.card0 {
    type hw
    card 0
}
ctl.card0 {
    type hw
    card 0
}

Et aplay -Lme donne:

null
    Discard all samples (playback) or generate zero samples (capture)

Oui, il existe une telle chose comme un périphérique audio "factice" dans Alsa. Mais vous devez préciser ce qui n'a pas fonctionné exactement pour vous. Message d'erreur, non détecté par le logiciel, etc. De plus, le "programme linux" cible utilise-t-il ALSA? Parce que si ce n'est pas le cas, jouer avec les fichiers de configuration ALSA ne vous donnera pas grand-chose.
haimg

Je veux qu'un périphérique audio virtuel soit créé dans / dev / ...
ssapkota

Voir l'édition pour plus.
ssapkota

Réponses:


14

Vous devez charger un pilote de son factice . Veuillez consulter le Wiki Alsa pour des informations détaillées, mais voici les bases:

  1. Chargez le pilote:

    modprobe snd-dummy; modprobe snd-pcm-oss; modprobe snd-mixer-oss; modprobe snd-seq-oss

  2. Avoir un fichier .asoundrc approprié (vous l'avez couvert)

  3. Configurez le chargement automatique des pilotes. Ajoutez ceci à /etc/modules.conf:

    # OSS / Free portion - card # 1
    alias sound-slot-0 snd-card-0
    alias sound-service-0-0 snd-mixer-oss
    alias sound-service-0-1 snd-seq-oss
    alias sound-service -0-3 snd-pcm-oss
    alias sound-service-0-8 snd-seq-oss
    alias sound-service-0-12 snd-pcm-oss

Il y a en fait pas mal de choses impliquées, je vous suggère de visiter la page Wiki ci-dessus pour une explication plus détaillée.


Une question. Est-il possible de créer un pilote de périphérique de noyau Linux qui simule une carte son vers Linux puis alsa, OSS, etc.? Je lis un appareil Linux et je me demande si c'est possible.
deFreitas

Le module de base pour le séquenceur semble désormais snd-seq-dummy.
DBrown

11

J'ai également eu des problèmes avec cela lorsque j'essayais de faire fonctionner un périphérique Dummy Sound sur le Raspberry Pi exécutant Raspian (dérivé de Debian). Le Pi on a une sortie audio mais pas d'entrée, et je veux utiliser une application qui recherche les deux, même si je n'ai besoin que d'une sortie (PJSIP).

Cependant, les informations ci-dessus n'ont pas fonctionné pour moi et la page WiKi non plus. Après avoir parlé avec un utilisateur de la liste de diffusion ALSA, ils ont suggéré que les informations sur la page WikI étaient obsolètes, mais ils m'ont donné des conseils sur la façon de résoudre ce problème.

Tout d'abord, je n'ai besoin que de charger le module 'snd-dummy' en utilisant:

sudo modprobe snd-dummy

Cependant, l'appareil ne reste pas présent après un redémarrage. Sur le Pi, ce module peut être chargé via le fichier '/ etc / modules', l'édition de ce fichier pour charger le pilote a produit les résultats souhaités:

sudo nano /etc/modules

Mon fichier / etc / modules ressemble simplement à ceci:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
snd-dummy

Ainsi, le pilote par défaut se charge en premier, puis le pilote factice se charge en second. Travail accompli!

Bonne chance

Chris


@logoff pensez-vous que cela fonctionnerait dans un conteneur docker ainsi que sur le rasberry pi?
thataustin

@thataustin Je suppose que vous devez donner accès au matériel au conteneur Docker. Je suggère de l'essayer d'abord sans Docker, et si vous réussissez, essayez avec Docker.
déconnexion le

0

Je l'utilise également pour Linphone sur RaspberryPi, car il nécessite un périphérique d'entrée, mais j'ai dû ajouter fake_buffer = 0 param, sinon le périphérique de capture factice capturerait beaucoup de bruit aléatoire, et ce serait bizarre ... vous pouvez le faire ça aime:

sudo modprobe snd-dummy fake_buffer=0
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.