Jak stworzyć fałszywe urządzenie karty dźwiękowej na serwerze Linux?


20

Chcę uruchomić program Linux, który wymaga karty dźwiękowej, na serwerze, który nie ma karty dźwiękowej. Czy można stworzyć fałszywą kartę dźwiękową? Nie jestem całkowicie świadomy wewnętrznych elementów systemu dźwiękowego Linux. Proszę skieruj mnie we właściwym kierunku.

Podążyłem za tym przykładem: http://alsa.opensrc.org/.asoundrc, ale się nie udało.

PS: Istnieje podobne pytanie: jak stworzyć wirtualne urządzenie dźwiękowe w systemie Linux? . Ale jest to zupełnie inne w kontekście, że użytkownik tworzy alias do już dostępnej karty dźwiękowej.


Edycja:
Chcę, aby w / dev / .. zostało utworzone urządzenie zastępcze, aby każda aplikacja potrzebująca urządzenia dźwiękowego je znalazła.
Jestem całkowicie nieświadomy, jak działa alsa. Więc po prostu poszedłem za przykładem. Utworzyłem /etc/asound.conf z:

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

I aplay -Ldaje mi:

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

Tak, w Alsa istnieje coś takiego jak „obojętne” urządzenie dźwiękowe. Ale musisz wyjaśnić, co dokładnie dla ciebie „nie wyszło”. Komunikat o błędzie, nie wykryty przez oprogramowanie itp. Czy docelowy „program linux” w ogóle korzysta z ALSA? Bo jeśli tak się nie stanie, bałagan przy użyciu plików konfiguracyjnych ALSA niewiele da.
haimg 10.10.11

Chcę stworzyć wirtualne urządzenie dźwiękowe w / dev / ...
ssapkota,

Zobacz edycję, aby uzyskać więcej.
ssapkota 10.10.11

Odpowiedzi:


14

Musisz załadować fałszywy sterownik dźwięku. Szczegółowe informacje można znaleźć na Wiki Alsa , ale oto podstawy:

  1. Załaduj sterownik:

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

  2. Posiadaj odpowiedni plik .asoundrc (masz go w zasięgu)

  3. Skonfiguruj automatyczne ładowanie sterowników. Dodaj to do /etc/modules.conf:

    # OSS / Free porcja - karta nr 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

W grę wchodzi naprawdę sporo rzeczy, sugeruję odwiedzić stronę Wiki powyżej w celu uzyskania bardziej szczegółowych wyjaśnień.


Pytanie. Czy można utworzyć sterownik urządzenia jądra systemu Linux, który symuluje kartę dźwiękową w systemie Linux, a następnie alsa, OSS itp.? Czytam urządzenie z systemem Linux i zadaję sobie pytanie, czy jest to możliwe.
deFreitas,

Moduł rdzenia sekwensera wydaje się teraz pokazywany jako snd-seq-dummy.
DBrown,

11

Ja również miałem z tym problemy, gdy próbowałem uzyskać urządzenie Dummy Sound działające na Raspberry Pi z Raspian (pochodną Debiana). Pi on ma wyjście audio, ale nie ma wejścia i chcę użyć aplikacji, która szuka obu, mimo że potrzebuję tylko wyjścia (PJSIP).

Jednak powyższe informacje nie działały dla mnie, podobnie jak strona WiKi. Po rozmowie z użytkownikiem z listy mailingowej ALSA zasugerowali, że informacje na stronie WikI są nieaktualne, jednak dali mi wskazówki, jak to rozwiązać.

Po pierwsze, muszę tylko załadować moduł „snd-dummy”, używając:

sudo modprobe snd-dummy

Jednak urządzenie nie pozostaje obecne po ponownym uruchomieniu. Na Pi ten moduł można załadować za pomocą pliku „/ etc / modules”, edytując ten plik, aby załadować sterownik, uzyskano pożądane wyniki:

sudo nano /etc/modules

Mój plik / etc / modules wygląda tak:

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

Tak więc domyślny sterownik ładuje się najpierw, a następnie sterownik Dummy ładuje się jako drugi. Zadanie wykonane!

Powodzenia

Chris


@logoff myślisz, że będzie działać w kontenerze dokerów, a także na rasberry pi?
thataustin

@thataustin Chyba musisz dać dostęp do sprzętu do kontenera Docker. Sugeruję wypróbowanie go najpierw bez Dockera, a jeśli ci się powiedzie, spróbuj z Dockerem.
wyloguj się

0

Używam go również dla Linphone na RaspberryPi, ponieważ wymaga urządzenia wejściowego, jednak musiałem dodać fake_buffer = 0 param, w przeciwnym razie atrapowe urządzenie przechwytujące dużo losowego hałasu, a to byłoby dziwne ... możesz to zrobić to jak:

sudo modprobe snd-dummy fake_buffer=0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.