Linux виртуальная звуковая карта

Create virtual device in .asoundrc file

I have been trying to create a virtual device to record the internal audio of my sound card using pure ALSA. After googling a lot, I found a .asoundrc file¹ that is very near of what I am looking for:

pcm.mycard < type hw card 0 >ctl.mycard < type hw card 0 >pcm.myconvert < type plug slave < pcm "myrecord" format S16_LE >> pcm.myrecord < type file format "raw" slave.pcm "mycard" file "| oggenc -Q -q6 -r -B %b -C %c -R %r -o /tmp/record-$(date +%%Y-%%m-%%d_%%H%%M%%S).ogg -" >pcm.!default

This configuration makes possible to record a ogg file with all audio played in my computer. What I would like to do now, is to modify the pcm.myrecord part of the configuration, so that the audio is «streamed» in a virtual card that I could capture later with let’s say, arecord . I would be glad if someone could help me with this. I tried this: How do I create virtual ALSA device from which I can record everything that is played? but that did not work for me. Below, the output from arecord -L :

muammar@zarathustra /tmp % arecord -L !10015 null Discard all samples (playback) or generate zero samples (capture) default:CARD=PCH HDA Intel PCH, CS4208 Analog Default Audio Device sysdefault:CARD=PCH HDA Intel PCH, CS4208 Analog Default Audio Device front:CARD=PCH,DEV=0 HDA Intel PCH, CS4208 Analog Front speakers dmix:CARD=PCH,DEV=0 HDA Intel PCH, CS4208 Analog Direct sample mixing device dsnoop:CARD=PCH,DEV=0 HDA Intel PCH, CS4208 Analog Direct sample snooping device hw:CARD=PCH,DEV=0 HDA Intel PCH, CS4208 Analog Direct hardware device without any conversions plughw:CARD=PCH,DEV=0 HDA Intel PCH, CS4208 Analog Hardware device with all software conversions default:CARD=Loopback Loopback, Loopback PCM Default Audio Device sysdefault:CARD=Loopback Loopback, Loopback PCM Default Audio Device front:CARD=Loopback,DEV=0 Loopback, Loopback PCM Front speakers surround21:CARD=Loopback,DEV=0 Loopback, Loopback PCM 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=Loopback,DEV=0 Loopback, Loopback PCM 4.0 Surround output to Front and Rear speakers surround41:CARD=Loopback,DEV=0 Loopback, Loopback PCM 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Loopback,DEV=0 Loopback, Loopback PCM 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Loopback,DEV=0 Loopback, Loopback PCM 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Loopback,DEV=0 Loopback, Loopback PCM 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers dmix:CARD=Loopback,DEV=0 Loopback, Loopback PCM Direct sample mixing device dmix:CARD=Loopback,DEV=1 Loopback, Loopback PCM Direct sample mixing device dsnoop:CARD=Loopback,DEV=0 Loopback, Loopback PCM Direct sample snooping device dsnoop:CARD=Loopback,DEV=1 Loopback, Loopback PCM Direct sample snooping device hw:CARD=Loopback,DEV=0 Loopback, Loopback PCM Direct hardware device without any conversions hw:CARD=Loopback,DEV=1 Loopback, Loopback PCM Direct hardware device without any conversions plughw:CARD=Loopback,DEV=0 Loopback, Loopback PCM Hardware device with all software conversions plughw:CARD=Loopback,DEV=1 Loopback, Loopback PCM Hardware device with all software conversions 

Источник

Читайте также:  Смена экрана загрузки linux

Виртуальная звуковая карта / разделение звуковых каналов

Интересует такой вопрос: как при наличии одной 6-и канальной (5.1) звуковой карты, сделать 2 виртуальных стерео (2.0) карты. К примеру, 2.0 (L Front + R Front) воспроизводит один плеер Бетховена, а 2-й 2.0 (L Rear + R Rear) играет Моцарта. Нужно это, чтоб 2 плеера играли музыку в разные колонки в разных комнатах с одного ПК.

Покупать 2-ю звуковую не хочу. Денег не жалко, просто как-то не рационально получается. Занимает отдельный PCI или USB, а поскольку все звуковые сейчас минимум 5.1, то получится в системе будет 12 звуковых каналов, из которых будет использоваться 4. Да и зачем, если это можно сделать на одной звуковой?

Под Linux знаю частичное решение с помощью Jack: http://kubuntu.ru/node/6862 Но оно не подходит, т.к. используется GUI QJackctl и всё это делаться ручным перетаскиванием каналов, а нужно чтоб всё делалось автоматом при загрузке.

Ещё нашёл интересную информацию, как сделать виртуальное звуковое устройство из двух звуковых (противоположность того, что нужно мне): http://www.alsa-project.org/main/index.php/Asoundrc#Virtual_multi_channel_dev.

Думаю можно с помощью Asoundrc и конфигурации на подобии той, что указана в последней ссылке, создать в ALSA два виртуальных звуковых устройства, а управлять ими с PulseAudio. Такой вариант был бы идеален.

В принципе, вариант с Jack`ом тоже подойдёт, если научить его делать это каким-то скриптом во время загрузки, без использования QJackctl.

Я в Linux не силён. Буду очень благодарен за любую помощь!

Источник

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

Итак, друзья, как видно из названия статьи, в ней будет описано как можно пустить звук на два и более устройства с одного компьютера. Это может пригодиться например если вы маньяк, как и я, и вам вдруг понадобилось посмотреть фильм с выводом звука и на hdmi монитора и на колонках компьютера.

Linux

Работа со звуком в Linux может стать нестерпимой головной болью. Pulseaudio сделал неоднозначную работу, с одной стороны он привнёс в жизнь линукс много хорошего, с другой стороны много плохого. Безусловно некоторые вещи работают лучше, чем раньше, другие вещи стали более сложными. Обработка аудиовыхода — одна из возникших сложностей.

Итак если вы хотите включить несколько аудиовыходов с вашего ПК под управлением Linux, вы можете использовать простую утилиту для включения других звуковых устройств в виртуальный интерфейс. Не пугайтесь, сделать это намного проще, чем кажется из описания. Самый простой способ включить воспроизведение звука из нескольких источников — использовать простую графическую утилиту под названием «paprefs». Это сокращение от PulseAudio Preferences.

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

В дистрибутивах базируемых на Archlinux установка командой:

В операционных cиcтемах основанных на Ubuntu установка командой:

Если вы используете не приведи господи Fedora, то придётся выполнить целых две команды:

su -c 'yum install pulseaudio-module-zeroconf' su -c 'yum install paprefs'

Ну и если в вашей жизни всё вообще пошло не так и вы пользуетесь openSUSE, то для установки в один клик нажмите на эту ссылку, либо введите в терминале по очереди эти чудесные строки:

zypper addrepo https://download.opensuse.org/repositories/openSUSE:Factory/standard/openSUSE:Factory.repo zypper refresh zypper install paprefs

Буду считать, что с установкой paprefs вы справились, приступаем к непосредственному объединению выходов. Несмотря на то, что утилита является графической, ее, вероятно, проще запустить, набрав paprefs в командной строке от обычного пользователя. Если же словосочетание «командная строка», вызывает в вас те же чувства, что у меня «большой адронный коллайдер», то найдите «PulseAudio Preferences» у себя и запустите.
Откроется окно вот такого вида:

Читайте также:  Linux zip file to directory

Нам нужна последняя вкладка «Simultaneous Output»

Как видно из скриншота, ошибиться на этой вкладке крайне сложно, так как присутствует всего один пункт включающий функционал, ради которого мы здесь и собрались. Ставим галочку рядом с «Add virtual output device for simultaneous output on all sound cards»

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

Затем открываем штатные настройки звука вашего рабочего окружения, на скринах будет Gnome, так же этого можно достичь в замечательной утилите pavucontrol

В настройках звука переходим на вкладку с выходными устройствами «Output» выбираем «Simultaneous Output».
Собственно это всё, теперь ваш звук «льётся» из всех физических устройств одновременно. Сразу хотел бы обратить ваше внимание, что после включения данной функции, у вас будет только один общий регулятор громкости.

Windows

Хотя Windows 10, по моему скромному мнению, очень достойный представитель семейства Microsoft, я не нашёл более подобающего способа чем использование триальной утилиты написанной Евгением Музыченко, но вполне себе умеющую выполнять возложенный на неё функционал. Пусть не так легко и просто как это делается в Linux, но всё же. Эта утилита называется Virtual Audio Cable, скачать её можно здесь. Те у кого нет денег и совести могут найти её бесплатно по названию на rutracker.
Будем считать, что вы уже украли купили приложение и установили его на компьютер, переходим в меню Пуск > Все программы > Virtual Audio Cable > Audio Repeater (MME)

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

В поле «wave in» выбираем «Line1 (Virtual Audio Cable)»
В поле «wave out» выбираем одно из устройств, на которое хотим подать звук. На картинке ниже я выбрал телевизор.
В поле приоритет ставим Realtime, что бы исключить задержки звука.
Нажимаем «Start», и слышим звук из выбранного устройства.

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

Сворачиваем окошко и запускаем ещё один экземпляр «Audio Repeater (MME)», в котором повторяем процедуру, только в качестве Wave out выбираем другое выходное устройство, в моём случае это hdmi монитора.

Недостаток этого способа в том, что каждый раз при включении компьютера нужно будет провести ритуал по включению репитера.

Mac OS X

Делаем вывод звука на два устройства (Linux,Windows, Mac OS X)

Надо отдать должное яблочной компании, у них эта функция реализована великолепно, причем что называется «из коробки».
Открываем встроенное приложение Audio MIDI Setup, в нём внизу нажимаем на плюсик и создаём устройство с несколькими выходами как на картинке.

Читайте также:  Linux read permissions all

Вот собственно и всё, я не претендую на исключительность и на то, что это самые лучшие способы, если знаете другие варианты, прошу поделиться в комментариях. Спасибо за внимание. Я желаю Вам счастья.

Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в https://www.youtube.com/channel/UCbrTUrElICx4pewX0NbolmQ

5 thoughts on “ Делаем вывод звука на два устройства (Linux,Windows, Mac OS X) ”

Для Windows (к примеру). audio_split.bat c:
cd «C:\Program Files\Virtual Audio Cable» start /min audiorepeater.exe /input:»Line 1 (Virtual Audio Cable)» /output:»Динамики (6- Asus Wireless Audi» /SamplingRate:44100 /BitsPerSample:16 /Channels:2 /Priority:High /autostart start /min audiorepeater.exe /input:»Line 1 (Virtual Audio Cable)» /output:»Динамики (Устройство с поддержк» /SamplingRate:44100 /BitsPerSample:16 /Channels:2 /Priority:High /autostart start /min audiorepeater.exe /input:»Line 1 (Virtual Audio Cable)» /output:»1 — TOSHIBA-TV (5- AMD High Def» /SamplingRate:44100 /BitsPerSample:16 /Channels:2 /Priority:High /autostart Не знаю, рабочий «батник» или нет, но смысл понятен, думаю.
Сохранить все это из Блокнота, с расширением ,bat, и подставив
свои имена устройств вывода (нужно скопировать в точности но вроде целиком не обязательно).
Затем — «засунуть» созданный файл в Автозагрузку при старте Windows,
любым способом: через реестр, добавив в планировщик, в папку запуска — файл или ярлык — «C:\Users\%User%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ (вроде тут должна быть). Параметры
/Input:Input (capture, recording) device name
/Output:Output (playback, rendering) device name
/SamplingRate:Sampling rate (samples per second)
/BitsPerSample:Bits per sample
/Channels:Number of channels
/ChanCfg:Channel configuration
/BufferMs:Total buffering length in milliseconds
/Buffers:Number of buffers (parts of buffering space)
/Priority:Process priority
/WindowName:Name of application instance window
/AutoStart Start audio transfer automatically
/CloseInstance:Close a specified Audio Repeater instance by its window name

Спасибо. А есть способ как-то разделить звук на 2 устройства например с разных вкладок в браузере? Обычно я в vlc плеере выбираю нужное мне звуковое устройство для вывода звука при просмотре фильма, а ютуб для ребенка в браузере открыт на втором мониторе(телевизоре) и туда же выводит звук — удобно и ни кто ни кому не мешает. Но вот если мне тоже нужно в браузере что-то посмотреть/послушать на своем монике, в то время как ребенок смотрит ютуб на втором — я не могу найти способ, как разделить вывод звука. Ума не приложу, почему разработчики винды не задумались и не сделали такую возможностью, рас разделение вывода изображения прекрасно работает автоматически и востребовано, то в качестве опции наверняка очень востребованно было бы и автоматическое разделение звука при перетаскивании окна на другой монитор.

Гуглить и решать)) я не профи пишу только то что делал сам, очень много полезной инфы на apple-life.ru

Источник

Оцените статью
Adblock
detector