Come creare un dispositivo con scheda audio fittizia nel server Linux?


20

Voglio eseguire un programma Linux che richiede una scheda audio, su un server, che non ha una scheda audio. È possibile creare una scheda audio fittizia? Non sono assolutamente a conoscenza degli interni del sistema audio Linux. Per favore, indicami la giusta direzione.

Ho seguito questo esempio: http://alsa.opensrc.org/.asoundrc ma non ha funzionato.

PS: C'è una domanda simile: come creare un dispositivo audio virtuale in Linux? . Ma questo è totalmente diverso nel contesto in cui l'utente sta creando un alias per la scheda audio già disponibile.


Modifica:
Voglio creare un dispositivo fittizio in / dev / .. in modo che qualsiasi applicazione che abbia bisogno di un dispositivo audio lo trovi.
Sono completamente all'oscuro di come funziona alsa. Quindi ho semplicemente seguito l'esempio. Ho creato /etc/asound.conf con:

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

E aplay -Lmi dà:

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

Sì, esiste un dispositivo audio "fittizio" in Alsa. Ma devi approfondire cosa esattamente "non ha funzionato" per te. Messaggio di errore, non rilevato dal software, ecc. Inoltre, il "programma linux" di destinazione utilizza ALSA? Perché in caso contrario, fare confusione con i file di configurazione ALSA non ti darà molto.
Haimg

Voglio creare un dispositivo audio virtuale in / dev / ...
ssapkota,

Vedi la modifica per di più.
ssapkota,

Risposte:


14

Devi caricare un driver audio fittizio . Consulta Alsa Wiki per informazioni dettagliate, ma ecco le basi:

  1. Carica il driver:

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

  2. Avere il file .asoundrc corretto (è coperto)

  3. Configurare il caricamento automatico dei driver. Aggiungi questo a /etc/modules.conf:

    # OSS / porzione libera - scheda # 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

In realtà ci sono alcune cose coinvolte, ti suggerisco di visitare la pagina Wiki sopra per una spiegazione più dettagliata.


Una domanda. È possibile creare un driver di dispositivo kernel Linux che simula una scheda audio su Linux, quindi alsa, OSS, ecc.? Sto leggendo il dispositivo Linux e mi chiedo se è possibile.
DeFreitas,

Il modulo core per il sequencer sembra ora mostrare come snd-seq-dummy.
DBrown,

11

Anch'io ho avuto problemi con questo quando ho provato a far funzionare un dispositivo Dummy Sound sul Raspberry Pi con Raspian (derivato di Debian). Il Pi on ha un output audio ma nessun input, e voglio usare un'applicazione che cerchi entrambi, anche se ho solo bisogno di un output (PJSIP).

Tuttavia, le informazioni sopra non hanno funzionato per me e nemmeno la pagina WiKi. Dopo aver parlato con un utente della mailing list ALSA, mi hanno suggerito che le informazioni sulla pagina Wiki non sono aggiornate, tuttavia mi hanno dato indicazioni su come risolverlo.

Innanzitutto, devo solo caricare il modulo 'snd-dummy' usando:

sudo modprobe snd-dummy

Tuttavia, il dispositivo non rimane presente dopo un riavvio. Sul Pi, questo modulo può essere caricato tramite il file '/ etc / modules', modificando questo file per caricare il driver ha prodotto i risultati desiderati:

sudo nano /etc/modules

Il mio file / etc / modules ha semplicemente questo aspetto:

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

Quindi, il driver predefinito viene caricato per primo, quindi il driver fittizio viene caricato per secondo. Lavoro fatto!

In bocca al lupo

Chris


@logoff pensi che funzionerebbe in un contenitore docker e sul rasberry pi?
Thataustin,

@thataustin Immagino che tu debba dare accesso all'hardware al contenitore Docker. Suggerisco di provarlo prima senza Docker e, se ci riesci, prova con Docker.
disconnessione il

0

Lo uso anche per Linphone su RaspberryPi, in quanto richiede un dispositivo di input, tuttavia ho dovuto aggiungere fake_buffer = 0 param, altrimenti il ​​dispositivo di acquisizione fittizio catturerebbe un sacco di rumore casuale e sarebbe strano ... puoi fare è come:

sudo modprobe snd-dummy fake_buffer=0
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.