Wie erstelle ich ein Dummy-Soundkartengerät in einem Linux-Server?


20

Ich möchte ein Linux-Programm ausführen, für das eine Soundkarte erforderlich ist, und zwar auf einem Server ohne Soundkarte. Ist es möglich, eine Dummy-Soundkarte zu erstellen? Ich kenne die Interna des Linux-Soundsystems überhaupt nicht. Bitte zeigen Sie mir in die richtige Richtung.

Ich bin diesem Beispiel gefolgt: http://alsa.opensrc.org/.asoundrc, aber es hat nicht funktioniert.

PS: Es gibt ähnliche Fragen: Wie erstelle ich ein virtuelles Soundgerät unter Linux? . Dies ist jedoch völlig anders, da der Benutzer einen Alias ​​für die bereits verfügbare Soundkarte erstellt.


Bearbeiten:
Ich möchte, dass ein Dummy-Gerät in / dev / .. erstellt wird, damit jede Anwendung, die ein Audiogerät benötigt, es findet.
Ich bin völlig unsicher, wie alsa funktioniert. Also folgte ich einfach dem Beispiel. Ich habe /etc/asound.conf erstellt mit:

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

Und aplay -Lgibt mir:

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

Ja, es gibt so etwas wie ein "Dummy" -Soundgerät in Alsa. Aber Sie müssen herausfinden, was genau für Sie "nicht geklappt" hat. Fehlermeldung, die von der Software nicht erkannt wird usw. Verwendet das Ziel- "Linux-Programm" überhaupt ALSA? Wenn dies nicht der Fall ist, können Sie mit den ALSA-Konfigurationsdateien nicht viel anfangen.
haimg

Ich möchte, dass ein virtuelles
Audiogerät

Weitere Informationen finden Sie in der Bearbeitung.
ssapkota

Antworten:


14

Sie müssen einen Dummy- Soundtreiber laden . Ausführliche Informationen finden Sie im Alsa-Wiki , aber hier sind die Grundlagen:

  1. Laden Sie den Treiber:

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

  2. Haben Sie die richtige .asoundrc-Datei (Sie haben es abgedeckt)

  3. Konfigurieren Sie das automatische Laden der Treiber. Fügen Sie dies hinzu zu /etc/modules.conf:

    # OSS / Freier Teil - Karte # 1
    Alias ​​Sound-Slot-0 Snd-Karte-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

Es gibt tatsächlich einige Dinge, ich schlage vor, dass Sie die Wiki-Seite oben besuchen, um genauere Erklärungen zu erhalten.


Eine Frage. Ist es möglich, einen Linux-Kernel-Gerätetreiber zu erstellen, der eine Soundkarte für Linux simuliert, dann alsa, OSS usw.? Ich lese gerade ein Linux-Gerät und frage mich, ob es möglich ist.
DeFreitas

Das Kernmodul für den Sequenzer scheint jetzt als snd-seq-dummy zu erscheinen.
DBrown

11

Ich hatte auch Probleme damit, als ich versuchte, ein Dummy-Sound-Gerät auf dem Raspberry Pi zum Laufen zu bringen, auf dem Raspian (eine Ableitung von Debian) ausgeführt wird. Der Pi on hat einen Audioausgang, aber keinen Eingang, und ich möchte eine Anwendung verwenden, die nach beidem sucht, obwohl ich nur einen Ausgang (PJSIP) benötige.

Die obigen Informationen funktionierten jedoch nicht für mich und die WiKi-Seite auch nicht. Nachdem sie mit einem Benutzer von der ALSA-Mailingliste gesprochen hatten, schlugen sie vor, dass die Informationen auf der WikI-Seite nicht mehr aktuell sind. Sie gaben mir jedoch Hinweise, wie dies zu lösen ist.

Erstens muss ich nur das 'snd-dummy'-Modul laden, indem ich Folgendes verwende:

sudo modprobe snd-dummy

Das Gerät bleibt jedoch nach einem Neustart nicht vorhanden. Auf dem Pi kann dieses Modul über die Datei '/ etc / modules' geladen werden. Wenn Sie diese Datei bearbeiten, um den Treiber zu laden, werden die gewünschten Ergebnisse erzielt:

sudo nano /etc/modules

Meine / etc / modules-Datei sieht einfach so aus:

# /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

Daher wird zuerst der Standardtreiber und dann der Dummy-Treiber geladen. Job erledigt!

Viel Glück

Chris


@logoff denkst du, würde in einem Docker-Container sowie auf der Rasberry Pi arbeiten?
Das ist der

@thataustin Ich denke, Sie müssen dem Docker-Container Zugriff auf Hardware gewähren. Ich schlage vor, es zuerst ohne Docker zu versuchen, und wenn Sie Erfolg haben, versuchen Sie es mit Docker.
Abmeldung

0

Ich benutze es auch für Linphone auf RaspberryPi, da es ein Eingabegerät erfordert, aber ich musste fake_buffer = 0 param hinzufügen, sonst würde das Dummy-Aufnahmegerät viele zufällige Geräusche aufnehmen, und das wäre seltsam ... das können Sie tun es mag:

sudo modprobe snd-dummy fake_buffer=0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.