Как установить pulseaudio на windows

Обновлено: 02.07.2024

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

PulseAudio Windows to Ubuntu Вещание звука по сети (часть 1)

У нас в школе есть школьное радио (система объявлений). В маленькой каморке стоит специальное оборудование от которого провода расходятся по всей школе. Что бы давать голосовые объявления у секретаря установлена точка с микрофоном. А что бы пустить по радио музыку надо было к тому оборудованию в каморке через Jack 3.5 подключать ноутбук и запускать нужную музыку. Не очень то удобно, если надо на каждой перемене запускать музыку. Гораздо удобнее управлять музыкой со своего рабочего места, а не бегать в каморку каждую перемену.

Решил поставить туда в каморку старенький системник и подключить его к оборудованию школьного радио.

Что бы не тратится на Windows я установил на этот системник Linux Ubuntu 13.10 Desktop.

Сначала идея была подключатся к нему через TeamViewer (программа для удалённого управления) и управлять медиаплеером. Но потом я нашёл решение получше.

TeamViewer всё-таки я установил, но оказалось, что когда к системнику не подключен монитор, TeamViewer не работает.

Мне это помогло.

Оказалось, что звук можно выводить по сети с Windows компьютера, например, с WinAMP с помощью плагина out_pulseaudio (зеркало) если настроить на Ububtu PulseAuidio.

Ввёл в консоли команду:
sudo apt-get install paprefs

и потом запустил paprefs и установил следующие галки:

Теперь запустил винамп и в настройках установил вывод на плагин out_pulseaudio и указал ip адрес своего системника с ubuntu.

Если не считать того что плагин слегка глючный и иногда WinAMP зависает и требует перезапуска, в первого взгляда всё работает отлично. Единственно, с безопасностью не очень.

p.s. Так получилось, что у меня уже был слабенький компьютер и я использовал его, но если покупать под это дело новый компьютер, то мне кажется хорошим выбором был бы такой Nettop: MicroXperts [A100-07 Nettop] за 7 990 руб. Это полноценный компьютер, только миниатюрный и бесшумный.

Вот тут описывают как сделать всё это используя wifi-роутер, прошитый linux. По деньгам выходит. роутер: 900р, usb-хаб: 180р, usb-звуковая карта: 800р. флешка: 380р. итого: 2260р, значительно дешевле, чем неттоп, но что бы это всё настроить придётся изрядно повозиться.



Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa :)

  • Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
  • Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
  • Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
  • Как управлять громкостью и усиливать тихий сигнал (!);
  • Как сделать Skype громче музыки?

Кратко о PulseAudio

  • PulseAudio — «слой звуковой абстракции», принимающий звуковой поток от приложений и передающий его Alsa;
  • PulseAudio оперирует объектами и позволяет перенаправлять звуковой поток между ними (роутинг);
  • PulseAudio — демон, обычно запускаемый от имени пользователя;
  • Позволяет передавать звук по сети и «расшаривать» микрофоны, установленные на других компьютерах.
  • Теперь при отключении USB-колонки ни одна прога не подвиснет, а будет переброшена на другую доступную карту :)

GUI инструменты

Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — могу порекомендовать попробовать GUI-tools, описанные на странице PulseAudio. С помощью pavucontrol можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать :) Также pavucontrol позволяет управлять громкостью общей и отдельных приложений.

Основные понятия PulseAudio

Card, Sink & Source
  • Card. Объект представляет физическую звуковую карту со всеми её входами и выходами;
  • Sink (англ. низина) — «сток», принимающий звуковой поток. Представляет выход звуковой карты: линейный выход, наушники, колонки ноутбука;
  • Source (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.

Итак, звук проигрывается через «Sink», а записывается через «Source».

Sink-Input & Source-Output
  • Sink-Input. Когда приложение, поддерживающее PulseAudio, собирается проигрывать звук — оно направляет свой вывод в один из объявленных Sink'ов и становится «входом Sink'a»: Sink Input. Приложение может создавать несколько потоков вывода, создавая отдельные Sink-Input'ы для каждого потока.
  • Source-Output. Если же приложение собирается принимать звук из некоторого Source (звукозапись) — оно становится «выходом Source'а»: Source-Output.

Итак, медиаплеер создаёт Sink-Input, а Skype — и Sink-Input, и Source-Output.

module, client, sample
  • Module. Загруженный модуль PulseAudio. Например, загрузка module-alsa-sink с заданием пераметров, указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули, создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;
  • Client. Приложение, подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.
  • Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например, x11 bell. Могут проигрываться по команде от модуля, клиента или из консоли.

ALSA → PulseAudio


Конечно же, сперва нужно убедиться что PulseAudio установлен и запущен:
sudo apt-get install pulseaudio
pulseaudio --start -D

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

/.asoundrc вставляем следующие строки (Которые, кстати, вылечат микрофон Skype'а! если ещё отключить «Позволить скайп автоматически подстраивать громкость» — подсказывает aim):
pcm.pulse < type pulse >
ctl.pulse < type pulse >
pcm.!default < type pulse >
ctl.!default < type pulse >

Первые две строки создадут виртуальные устройства ALSA с именем 'pulse' для ввода и вывода, а также устройство контроля (громкости). Следующие две — определяют их как «по умолчанию»: теперь все приложения вместо Alsa будут использовать PulseAudio через специальный плагин (и ничего не подозревать).
Для применения измений нужно перезапустить звуковые приложения. Свежезапущенные приложения подхватят изменения сами.
UPD: yuretsz подсказывает, что приложения, использующие OSS ( /dev/dsp ), нужно запускать через враппер padsp [options] PROGRAM [ARGUMENTS . ] .

Управление PulseAudio: pactl

Управление PulseAudio осуществляется с помощью команды pactl, про которую нельзя сказать что она удобная и продвинутая :) однако тренироваться будем с ней.

Осмотр владений

Рекомендую присмотреться к полям объектов Sink и Source: по умолчанию они описывают Ваше железо.
Покажу свой пример:

pactl & pacmd

Кроме pactl существует другая утилита для управления PulseAudio: pacmd .
Если к PulseAudio подключен модуль module-cli-protocol — создаётся UNIX-сокет на котором висит PulseAudio-shell. Это во многом похоже на telnet :)
Шелл принимает текстовые команды и исполняет их. pacmd help покажет список доступных команд.
Проблема в том, что pactl умеет не всё, а pacmd не так удобен в использовании. В дальнейшем будем придерживаться pactl , однако если его функционала не хватит — используем pacmd .
В конце статьи я продемонстрирую собственную утилиту, работающую поверх стандартных: намного более функциональную и удобную :)

Card Profile: маппинг портов звуковой карты

У звуковой карты ограниченное количество разъёмов, а применений им может найтись масса: можно задействовать все под вывод звука 5.1 и оставить один для микрофона; или же оставить один джек под стерео-выход, зато получить входы для микрофона и линейный; или…
Увы, магия здесь не прокатит: наборы предустановлены производителем. Их список можно посмотреть в поле «Profiles» объекта «Card».
Для каждого профиля задаётся приоритет (priority): число, определяющее «степень привлекательности» именно этого профайла. По умолчанию PulseAudio выбирает профайл с наибольшим приоритетом.
Для каждого профайла указывается сколько Sink'ов и Source'ов он породит если его выбрать: sinks: 1, sources: 0 .

На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль.
Подсматриваем в выводе pactl list имя карты и профиля, и выбираем:
pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'output:analog-stereo+input:analog-stereo'
Всё, порты карты переназначены.
Можно вообще выключить все разъёмы, выбрав профайл «off»:
pactl set-card-profile 'alsa_card.pci-0000_00_1b.0' 'off'

Sink Port: переключение звука на наушники

У одного Sink'а может быть несколько звуковых портов. Например, Sink созданный на основе звуковой карты ноутбука, может иметь два порта: встроенные колонки и выход на наушники.
Текущий порт Sink'а можно посмотреть в его поле Active Port: analog-output-speaker .
Глядя на список Ports нужного объекта Sink, назначаем порт:
pactl set-sink-port 'alsa_output.pci-0000_00_1b.0.analog-stereo' 'analog-output'
и звук моментально перебрасывается на наушники, отключая колонки.
Аналогично для Source. Возможно, Ваш микрофон не работает в Skype именно из-за того что выбран не тот порт записи :)

Default Sink: звуковой выход по умолчанию
Move Sink-Input: перемещение звукового потока
Управление громкостью
Громкость приложений

С появлением Windows7 линуксоиды, не знакомые с PulseAudio, обзавидовались возможности регулировать громкость отдельных приложений :)
Теперь это возможно: смотрим index нужного Sink-Input'а и усиливаем отдельное приложение:
pactl set-sink-input-volume '16' 80000

Приостановка

Sink и Source можно «приостановить»:
pactl suspend-sink '1'

Конфиг

  • pacmd — Запускает интерактивную консоль PulseAudio
  • pacmd help — список команд, на оффсайте

patricks

Замучавшись неудобством официальных утилит, ваш верный слуга написал свою утилиту для управления демоном PulseAudio :)

  • Короткие, интуитивные команды
  • Дозированная подача информации командой ls : теперь в терминал не будет вываливаться тонна информации (особенно properties)
  • Все объекты — в том числе порты и профайлы — можно задавать как по имени, так и по индексу
  • Команда set sink 0 port next — можно не гадать номер порта и просто переключиться на следующий. Удобно для хоткея.
  • Наличие команды mv sink 0 all для перемещения всех звуковых потоков в нужный Sink (USB-Колонка)

Пример работы:
Посмотреть список Sink'ов. Текущий Sink выделен символом >:


Перекинуть все Sink-Input'ы на следующий Sink (например, свежеподключенную USB-колонку)

Pulseaudio изначально не поддерживается WSL2, и его сложно связать с динамиками Windows. Следовательно, когда вы открываете рабочий стол с графическим интерфейсом или приложения в X410, вы не услышите ничего, кроме основных системных сигналов.

В этом руководстве рассмотрим способ, который отлично работает с последней версией Pulse на Windows 10. Мы надеемся, что Microsoft все же добавит поддержку звука в будущую версию WSL.

Чтобы настроить PulseAudio 5.0 в Windows, сделайте следующее:

Шаг 1: Загрузите pulseaudio-5.0-rev18.zip

Шаг 2: Распакуйте его и скопируйте содержимое в папку pulse в «C:\pulse».

Шаг 3: Создайте в этой папке файл «config.pa» со следующим содержимым:

Загрузите pulseaudio-5.0 и Распакуйте его и скопируйте содержимое в папку pulse в «C:\pulse».

Обратите внимание, что из соображений безопасности и конфиденциальности Windows 10 (обновление за Май.), ограничивает доступ к устройствам записи звука. Вы, вероятно, можете как-то переопределить эту функцию, но поскольку мы только хотим слышать звук, просто отключаем запись на сервере PulseAudio, добавляя 'record = 0'.

Шаг 4: «Pulseaudio.exe» - это исполняемый файл для сервера PulseAudio (также называемый демоном), который нужен для наших приложений Linux.

Откройте PowerShell в папке «c:\pulse» и выполните команду:

«Pulseaudio.exe» - это исполняемый файл для сервера PulseAudio

Шаг 5: Запустите wsl2 и выполните:

Запустите wsl2 и выполните: export PULSE_SERVER

Теперь проверьте звук в wsl2, и он заработает. На этом можно остановится (Вам придется повторить эти шаги перед каждым запуском WSL2, для воспроизведения звука).

Автоматизируем возможность воспроизводить звук из Linux на вашем ПК Windows 10.

Если вы хотите чтобы настройки для работы звука выполнялись автоматически, а не запускать каждый раз PulseAudio в командной строке, нужно создать службу Windows. Я использую NSSM для запуска произвольных программ как служб.

Шаг 1: Загрузите последнюю версию NSSM.

Шаг 2: Распакуйте его и скопируйте «nssm.exe» из папки win32 в «c:\pulse».

Шаг 3: Выполните в командной строке или Power Shell:

Шаг 4: Заполните следующие данные на вкладке «Application»:

  • Path: c:\pulse\pulseaudio.exe
  • Startup directory: c:\pulse
  • Arguments: -F c:\pulse\config.pa

Заполните следующие данные на вкладке Application:

Шаг 5: На вкладке «Details» введите:

На вкладке «Details» введите: Display name: PulseAudio

Шаг 7: Все, запустите только что установленную службу - либо с помощью управления службами, либо выполнив команду:

запустите только что установленную службу - либо с помощью управления службами,

 запустите только что установленную службу - выполнив команду:

Теперь у вас будет постоянная служба pulseaudio в Windows, которая практически не использует оперативную память.

Шаг 8: Добавьте в конец файла «.bashrc» вашего дистрибутива wsl2, чтобы всегда выводить звук.

Это отлично работает.

Добавьте в конец файла «.bashrc» вашего дистрибутива wsl2, чтобы всегда выводить звук.

Кстати, данная конфигурация разрешает анонимные соединения, вы можете ограничить его IP-адресом wsl2, если хотите, но он регулярно меняется.

Какой способ используете вы, чтобы включить звук в WSL 2, поделитесь с нами в комментариях ниже.

Сам модифицированный архив вы можете скачать по ссылке yadi.sk/d/rvfjEVGPA_PKDQ.

Распакуйте его в корень системного раздела, запустите от имени администратора консоль PowerShell , перейдите в расположение каталога PulseAudio .

Каталог PulseAudio

И выполните команду .\pulseaudio.exe -F config.pa .

Pulseaudio.exe

После нажатия Enter появится окошко брандмауэра, в котором вам нужно разрешить подключение к серверу. Не закрывайте окно консоли PowerShell . Если этап пройдет без ошибок, вызовите консоль WSL2 и выполните в ней такую команду:

export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '');

Export PULSE_SERVER

После этого в WSL2 должен появиться звук. Минусом этого решения является необходимость повторять описанную процедуру каждый раз при необходимости включить звук, но ее можно автоматизировать, добавив в Windows 10 отдельную службу, воспользовавшись NSSM — портативной утилитой, позволяющей запускать любые приложения в Виндовс как службы — демоны, если говорить языком Linux.

Для загрузки инструмент доступен с сайта разработчика nssm.cc/download.

Распаковав архив с утилитой, зайдите в папку win32 и скопируйте из нее файл nssm.exe в ваш каталог с файлами PulseAudio .

Каталог с файлами PulseAudio

Чтобы установить службу, откройте PowerShell , перейдите в вашу папку PulseAudio и выполните следующую команду:

.\nssm.exe install PulseAudio

В открывшемся окошке инсталлятора сервиса на вкладке «Application» в поле «Path» задайте полный путь к исполняемому файлу PulseAudio , в поле «Startup directory» укажите расположение самой папки PulseAudio . Наконец, в поле «Arguments» укажите путь к конфигурационному файлу config.pa с ключом F.

NSSM

Затем, переключившись на вкладку «Details», вставьте в поле «Display name» PulseAudio, после чего запустите установку сервиса нажатием кнопки «Install service».

Install service

PowerShell

И последний шаг, который вам предстоит сделать, это открыть в Bash командой explorer.exe каталог вашего дистрибутива Linux, найти там файл .bashrc и добавить в его конец строчку — ту самую первую команду, начинающуюся с «export».

Службы

.bashrc

Если что-то не получилось, ничего страшного.

Реализация поддержки звука в WLS2 на подходе и, возможно, прибегать к подобным ухищрениям вам больше не понадобится.

Звук в системе - вещь очень необходимая. Вы можете захотеть послушать музыку, посмотреть фильм, пообщаться с друзьями через голосовую связь или видеочат. Для всего этого вам нужно будет, чтобы система поддерживала работу со звуком. И не менее важно, чтобы звук воспроизводился хорошо.

В этой статье мы не будем рассматривать установку драйверов или выполнить настройку звука linux по умолчанию. Мы будем говорить о комфортном управлении звуком. О том, как заставить звуковую систему работать лучше, чтобы получаемый звук соответствовал вашим желаниям.

Как работает аудио в Linux

Если не вдаваться в подробности, то вот небольшая схема того, как будет работать звук в Linux:


Здесь есть источник и есть цель. Что-то создает звук, что-то должно его получить и обработать, а затем, наконец, воспроизвести. Для большинства повседневных задач мы используем обычные приложения, например, VLC для генерации звука и колонки или наушники для воспроизведения.

В обратном порядке то же самое. Устройство, например, микрофон, генерирует звук, а затем отправляет его приложению, например, Jitsi или Skype. Модель всегда работает похожим образом. Но между этими двумя точками существует звуковая подсистема Linux.

Если не углубляться в историю, для управления звуком linux использовалась Advanced Linux Sound Architecture (ALSA). Если быть точным, то она и сейчас используется. Но в современных дистрибутивах настройка звука в linux выполняется без непосредственной настройки ALSA пользователем. Вместо этого применяются инструменты более высокого уровня - PulseAudio.

Почему именно PulseAudio?

Почему Pulse так необходим? Это не так. ALSA работает настолько хорошо, что многие дистрибутивы только сейчас начинают интегрировать Pulse по умолчанию. Тем не менее работа с ALSA может потребовать многих часов ручной настройки.

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

Сейчас мы требуем от нашего компьютера намного больше чем раньше. Раньше аудиовыход подключался к наушникам или колонкам и все. Сейчас же часто необходимо подключать компьютер к пучковой аудиосистеме, телевизору и получать звук с микрофона по Bluetooth.

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

Настройка Pulse

Чтобы настроить воспроизведение звука с помощью Pulse вам понадобится выполнить три вещи:

  • Проверьте соединения, как физические, так и виртуальные;
  • Подключите звуковой выход или вход к источнику звука;
  • Управляйте целями с помощью Pulse Audio Control (pavucontrol).

Шаг 1. Проверьте оборудование

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

Признайте это. Вы хоть раз оставляли подключенными наушники, забывали ввести пароль к колонкам или пытались включить звук с выключенной громкостью. Вы тратили много времени на настройку звука linux, а проблема была совсем не там. Поэтому лучше сразу убедиться что физическая составляющая в порядке. Так дополнительная настройка PulseAudio будет проще.

Шаг 2. Проверьте ваше приложение

Точно так же проверьте настройки вашей программы. Не во всем программах есть много опций, но, например, в VLC можно настроить громкость воспроизведения и драйвер, с помощью которого будет воспроизводиться звук:


В приложении Google Hangouts настройки более упрощены:


Вам нужно убедиться, что приложение отправляет звук правильной подсистеме. Если сомневаетесь, лучше передать звук Pulse:

  • Отправьте звук Pulse и сможете управлять его воспроизведением динамически с помощью панели управления Pulse;
  • Если хотите получить ручной контроль - отправьте звук напрямую в ALSA. Это может понадобиться если вы используете такие профессиональные JACK или Patchage. Им нужно иметь полный контроль над маршрутизацией звука.

У Pulse есть плагин для ALSA поэтому даже если вы направите звук в ALSA, вы все равно сможете управлять им с помощью Pulse. Сигнал не будет перехвачен, так что об этом можно не беспокоиться.

Шаг 3. Настройка звука в pavucontrol

С помощью панели управления звуком PulseAudio или pavucontrol вы можете выполнять все необходимые действия. По умолчанию она находится в настройках Gnome, но может быть установлена отдельно. Для KDE утилита будет называться pavucontrol-qt.

Вы можете использовать pavucontrol чтобы настроить громкость звука и маршрутизацию на вашем компьютере. Возможно, вы ею уже пользуетесь ежедневно, но не знаете что это настройка pulseaudio. Когда вы регулируете громкость в своем окружении рабочего стола, вы используете те же инструменты.

Панель управления состоит из пяти вкладок:

  • Конфигурация - настройка звуковых карт. Она не используется часто, один раз устанавливаете нужные значения и забываете;
  • Устройства ввода - доступные устройства ввода, что-то, что может генерировать звук, например, микрофон или веб-камера;
  • Устройства вывода - доступные устройства вывода, такие как колонки или наушники, а также USB гарнитуры;
  • Запись - активные сеансы записи, например, браузер ищет аудиовход для чата или программа для записи, например, Audacity.
  • Проигрывание - активный поток звука, которые воспроизводится в данный момент. Вы можете менять громкость для одного или для двух каналов по отдельности для каждого приложения.


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

Шаг 4. Маршрутизация звука в Pulse

Вы можете выбрать на какое устройство будет передаваться ваш звук с помощью Pulse. Настройка звука Pulseaudio выполняется очень просто. Например, попробуйте что-то простое. Включите какую-либо музыку, затем перейдите на вкладку конфигурация.

Здесь обратите внимание, что для каждого устройства выбран профиль работы, например, у меня для встроенного аудио используется аналоговый сетреодуплекс. Если вы измените его на что-то другое музыка затихнет. Она продолжит воспроизводиться, но мы ее не будем слышать.


Вы можете видеть, что здесь, кроме аудиовыходов есть HDMI. После установки новой видеокарты, она может перехватить приоритет вывода у звуковой. Но вы уже знаете куда смотреть. В остальных же случаях параметры не изменятся пока вы их сами не измените.

Теперь давайте предпримем что-то более сложное, например, запишем воспроизводимый звук в файл. Откройте Audacity и в настройках выберите источник звука Pulse. Иногда может быть Default Line:0


Затем начните запись, вы увидите что пишите тишину:


Дальше вернитесь к панели управления Pulse, перейдите на вкладку Запись и выберите источник для Audacity вместо Встроенное аудио - Monitor Встроенное аудио, дальше вы увидите как началась запись:



Таким образом, вы можете перенаправлять звук для приложений. Многие проблемы со звуком возникают из-за того, что система использует не то аудиоустройство по умолчанию. Возможно, ваша USB камера не установлена как стандартный аудиовход. В таком случае вы просто не получите звука.

То же самое верно для аудио. Если вы смотрите фильм и не слышите звук, проверьте Pulse. Возможно, он отправляется на неактивное устройство или громкость отключена.

Выводы

На компьютерах всегда были проблемы со звуком. Звуковым устройствам нужны драйвера, операционной системе нужно обнаружить их и управлять, а пользователь должен понимать как работают элементы управления. Мы рассмотрели как выполняется настройка звука в Linux. И да, это 2017 и Linux может воспроизводить звук. И даже больше, он может управлять звуком. Надеюсь, эта информация была полезна для вас.

Читайте также: