Как создать фиктивную звуковую карту устройства на сервере Linux?


20

Я хочу запустить программу Linux, требующую звуковую карту, на сервере, на котором нет звуковой карты. Можно ли создать фиктивную звуковую карту? Я совершенно не осведомлен о внутренностях звуковой системы Linux. Пожалуйста, укажите мне в правильном направлении.

Я следовал этому примеру: http://alsa.opensrc.org/.asoundrc, но это не сработало.

PS: Есть похожий вопрос: Как создать виртуальное звуковое устройство в Linux? , Но это совершенно другое в том смысле, что пользователь создает псевдоним для уже доступной звуковой карты.


Изменить:
я хочу, чтобы в / dev / .. было создано фиктивное устройство, чтобы любое приложение, которому требуется звуковое устройство, нашло его.
Я совершенно не знаю, как работает Alsa. Поэтому я просто последовал примеру. Я создал /etc/asound.conf с:

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

И aplay -Lдает мне:

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

Да, в Alsa есть такая вещь, как "фиктивное" звуковое устройство. Но вам нужно уточнить, что именно «не сработало» для вас. Сообщение об ошибке, не обнаруженное программным обеспечением и т. Д. Кроме того, целевая «программа Linux» вообще использует ALSA? Потому что, если этого не произойдет, возиться с файлами конфигурации ALSA не даст вам много.
Haimg

Я хочу создать виртуальное звуковое устройство в / dev / ...
ssapkota

Смотрите редактирование для более.
ссапкота

Ответы:


14

Вам необходимо загрузить фиктивный звуковой драйвер. Пожалуйста, смотрите Alsa Wiki для подробной информации, но вот основы:

  1. Загрузите драйвер:

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

  2. Иметь правильный файл .asoundrc (он у тебя есть)

  3. Настройте автозагрузку драйверов. Добавьте это к /etc/modules.conf:

    # OSS / Свободная часть - карта # 1
    псевдоним sound-slot-0 snd-card-0
    псевдоним sound-service-0-0 snd-mixer-oss
    псевдоним sound-service-0-1 snd-seq-oss
    псевдоним sound-service -0-3 snd-pcm-oss
    псевдоним sound-service-0-8 snd-seq-oss
    псевдоним sound-service-0-12 snd-pcm-oss

На самом деле, есть довольно много вещей, я предлагаю вам посетить страницу Wiki выше для более подробного объяснения.


Вопрос. Можно ли создать драйвер устройства ядра Linux, который имитирует звуковую карту для Linux, затем alsa, OSS и т. Д.? Я читаю устройство Linux и спрашиваю себя, возможно ли это.
deFreitas

Основной модуль для секвенсора теперь выглядит как snd-seq-dummy.
DBrown

11

У меня тоже были проблемы с этим, когда я пытался заставить устройство Dummy Sound работать на Raspberry Pi с Raspian (производной от Debian). У Pi on есть аудиовыход, но нет входа, и я хочу использовать приложение, которое ищет оба, хотя мне нужен только выход (PJSIP).

Тем не менее, информация выше не работает для меня, как и страница WiKi. После разговора с пользователем из списка рассылки ALSA, они предположили, что информация на странице WikI устарела, однако они дали мне подсказки, как решить эту проблему.

Во-первых, мне нужно только загрузить модуль 'snd-dummy', используя:

sudo modprobe snd-dummy

Тем не менее, устройство не остается в наличии после перезагрузки. На Pi этот модуль может быть загружен через файл / etc / modules, редактируя этот файл для загрузки драйвера, который дает желаемые результаты:

sudo nano /etc/modules

Мой файл / etc / modules просто выглядит так:

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

Таким образом, драйвер по умолчанию загружается первым, а затем фиктивный драйвер загружается вторым. Дело сделано!

Удачи

Крис


@ logoff, как вы думаете, будет работать в докер-контейнере, а также на Rasberry Pi?
thataustin

@thataustin Думаю, вам нужно предоставить доступ к оборудованию для контейнера Docker. Я предлагаю сначала попробовать без Docker, и если вам это удастся, попробуйте с Docker.
выход

0

Я также использую его для Linphone на RaspberryPi, так как для него требуется устройство ввода, однако мне пришлось добавить параметр fake_buffer = 0, иначе фиктивное устройство захвата будет захватывать много случайного шума, и это будет странно ... вы можете сделать это это как:

sudo modprobe snd-dummy fake_buffer=0
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.