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

Обновлено: 03.07.2024

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

Опишите решение, которое вы хотели бы
Добавить поддержку звука в качестве обновления

Опишите альтернативы, которые вы рассмотрели,
коды для Pulseaudio для подключения динамика Windows или экспорта звука Linux на локальный IP-адрес хоста.

Текст был успешно обновлен, но возникли следующие ошибки:

комментарий therealkenc от 26 августа 2020 г.

прокомментировал ameeno 27 августа 2020 г. •

Я нашел способ, который лучше, чем руководство для x410, и работает с последней версией пульса в Windows 10. Он устанавливает пульс как службу и работает без проблем.

это руководство.

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

Протестируйте эту настройку, выполнив: c:\pulse\pulseaudio.exe -F config.pa
На стороне wsl2 необходимо выполнить:

Включите звук на wsl2, и он заработает.
Теперь вы сможете воспроизводить звук Linux на своем ПК с Windows.
Для постоянной установки нам нужно создать службу Windows, а не запускать PulseAudio в командной строке. Я использую NSSM для запуска произвольных программ в качестве сервисов. Загрузите последнюю версию NSSM.

Извлеките его и скопируйте nssm.exe из папки win32 в папку c:\pulse.
Выполнить:

Заполните следующие данные на вкладке Приложение:
Путь: c:\pulse\pulseaudio.exe
Каталог запуска: c:\pulse
Аргументы: -F c: \pulse\config.pa
На вкладке Подробности заполните:

Отображаемое имя: PulseAudio
Теперь нажмите Установить службу.

Наконец, запустите только что установленную службу — либо через Службы в инструментах администрирования, либо запустив net start PulseAudio

Теперь у вас будет постоянная служба pulseaudio в Windows, которая потребляет очень мало оперативной памяти.
для постоянных настроек на стороне WSL вы можете поместить в файл .bashrc следующее:

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

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

Я видел, как люди используют такие методы, как: sed и regex для обновления/изменения файла config.pa на правильный IP-адрес при запуске WSL2 (который находится в /mnt/c/pulse/config.pa) но затем вы должны остановить и запустить службу импульсного звука NSSM в Windows. - Не думаю, что это так просто.

Разрешение анонимных подключений пока работает нормально и имеет дополнительное преимущество, заключающееся в том, что любая виртуальная машина WSL/Hyper-V может просто выводить звук с моего ноутбука по протоколу TCP.

Надеюсь, это поможет!

прокомментировал tomjepp 1 сентября 2020 г.

@ameeno Упс. Это не должно 404! Я положу это обратно!

прокомментировал ameeno 1 сентября 2020 г. •

@tomjepp привет, Том. Потрясающе спасибо.
Ваше руководство было больше связано с Windows для перенаправления звука по сети.
Но это лучший способ, который я нашел, чтобы иметь более современный импульсный сервер постоянно в Windows.

Я немного адаптировал его для использования в wsl и разрешил анонимный звук.
Возможно, вы могли бы включить использование wsl1/2 в свое руководство?
Импульс как услуга + x410 при запуске делает приложения для Linux с графическим интерфейсом практически бесшовными.

Сначала спасибо за руководство!

прокомментировал tomjepp 1 сентября 2020 г.

@ameeno Боюсь, я сам не использую WSL, поэтому не могу этого сделать. Однако не стесняйтесь использовать это руководство в качестве основы!

cerebrate прокомментировал 5 сентября 2020 г.

Похоже, что первый важный вопрос здесь заключается в том, будет ли звуковая поддержка, если таковая имеется, наряду с поддержкой приложений с графическим интерфейсом, которая, как мы уже знаем, находится в дорожной карте? @craigloewen-msft ?

Прокомментировал Panchie 17 сентября 2020 г.

@ameeno @tomjepp Большое спасибо вам обоим за это, отлично работает с Debian Buster + Mopidy на моем рабочем столе. Выдающиеся вещи.

eamondo2 прокомментировал 9 октября 2020 г.

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

Это в основном основано на руководстве от @ameeno выше, но с несколькими дополнительными битами, чтобы X11 также работал.

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

прокомментировал ameeno 9 октября 2020 г.

@eamondo2 Да, звучит неплохо.

Только я использую X410 вместо vcxsrv

также мои переменные .bashrc выглядят так:

Кажется, это работает отлично

Внесенные мной изменения включают:

ubuntu1804.exe становится ubuntu.exe (для обычных ubuntu d/l из магазина ms)

Все мои экспорты/функции/переменные для wsl2 и .bashrc фактически находятся внутри файла с именем .exports в моей домашней папке.
мои исходники файлов .bashrc /home//.exports
Мой терминал здесь исходники скриптов /home//.экспорт

также я использую d:\wsl\ для файлов сценариев vbs.

В вашем случае вам потребуется запустить сгенерированный файл vcxsrv, чтобы запустить ваш x-сервер.
Очень удобно иметь настоящий Linux-терминал, где бы вы ни захотели. :)

прокомментировал timriker 21 октября 2020 г.

Я установил в etc/pulse/default.pa следующее:

модуль загрузки-модуля-собственный-протокол-tcp auth-ip-acl=127.0.0.1;172.16.0.0/12

Это позволит разрешить все локальные подключения для WSL1 и блокировать 172.16.0.0/12 RFC-1918, который является пространством по умолчанию для WSL2.

Я бы не рекомендовал auth-anonymous=1, так как это позволит подключиться любому удаленному компьютеру. Я использую это внутри своего .bashrc:

Адамканнингтон прокомментировал 4 января 2021 г.

Что касается Windows, вот как выглядит мой работающий экземпляр. Должны ли меня беспокоить какие-либо предупреждения/ошибки?

прокомментировал ameeno 4 января 2021 г.

Ваш пульс-сервер не принимает подключения. Можете ли вы попробовать поместить пульс в каталог c:\pulse\ и запустить пульс от имени администратора в CMD?

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

Убедитесь, что вы запускаете CMD от имени администратора, чтобы запустить пульс в первый раз.

Кроме того, я заметил, что в ваших журналах используются как обратная, так и прямая косая черта.

Адамканнингтон прокомментировал 4 января 2021 г. •

@ameeno Я не думаю, что дело в этом, потому что вот что странно. звук работает, когда я запускаю контейнер докеров в wsl2.

В моем dockerfile я делаю две вещи:

Как это может работать через докер через WSL, но не напрямую из WSL?

Полная информация ниже. make run-local запускается локально, тогда как make run запускает док-контейнер. Как странно, что второе работает, а первое нет — что я упускаю?

Адамканнингтон прокомментировал 6 января 2021 г.

@ameeno есть мысли? Благодарен за любую помощь, спасибо

ameeno прокомментировал 6 января 2021 г.

определенно проблема с конфигурацией Linux, а не с пульсом.
если пульс работает на окнах, импульс работает на окнах.

Возможно, вы установили какой-то другой звуковой сервер или фиктивные звуковые конфигурации в своих выходках с wsl2? как насчет того, чтобы начать новую установку wsl2 в качестве побочного проекта и посмотреть, сможете ли вы заставить ее работать, следуя руководству?

иначе будет слишком много возможных переменных для отладки.

Адамканнингтон прокомментировал 6 января 2021 г.

Я буквально вчера сделал новую установку wsl2 + 20.04 и та же проблема. У меня есть возможность удалить --purge pulseaudio alsa-base и переустановить, и та же проблема. Но я согласен с вами - это что-то в моей конфигурации Ubuntu, что вызывает проблемы, когда он пытается подключиться к моему серверу пульса Windows.

ameeno прокомментировал 6 января 2021 г.

Да. Я предполагаю (и я столкнулся с этим изначально, когда я отлаживал в первый раз) - звуковое устройство по умолчанию в импульсе: а) либо DUMMY OUTPUT, либо B) отключено.

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

Я думаю, это может сработать.

проверить соединение (убедившись, что переменная env верна) с

это должно распечатать некоторую информацию о сервере Pulse, к которому вы подключены.

наконец, вы можете протестировать звук через командную строку с помощью

и вы должны услышать звонок, предполагающий, что ваша команда pactl info ранее дала правильные результаты.

все это требует установки в Ubuntu утилиты pulseaudio-utils.

Если вышеперечисленное не работает, выйдите из сеанса wsl после выполнения приведенных выше команд commenting/rm. установите выключение wsl2, перезапустите, добавьте env var. проверьте env var mace, чтобы убедиться, что вы можете получить информацию pactl о подключении к серверу pulse.

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

надеюсь, мои советы будут полезны.

Адамканнингтон прокомментировал 6 января 2021 г. •

@ameeno Спасибо за информацию. Вот вывод первых нескольких:

Предположительно, это не может быть проблемой брандмауэра, если мой контейнер Docker может подключаться через host.docker.internal? Может быть, я неправильно понимаю, но когда мой док-контейнер запускается, он подключается НАПРЯМУЮ к моему серверу пульса Windows или через мое ядро ​​WSL ubuntu?

Есть ли где-нибудь, где я могу увидеть журналы, созданные pactl info?

Адамканнингтон прокомментировал 6 января 2021 г. •

Или, возможно, это глупый вопрос — возможно, единственное, что делает мое ядро ​​​​WSL, когда я запускаю docker, — это маршрутизация IP-подключения, но, по сути, это клиент pulseaudio в моем контейнере docker, который, я думаю, подключается к моему серверу пульсаудио Windows. Итак, другими словами, проблема заключается в конфигурации моего клиента wsl pulseaudio.

ameeno прокомментировал 6 января 2021 г.

быстрый google говорит мне, что вы должны попробовать

по сути, сальса выбирает неправильную звуковую карту.

если вы устанавливаете pulseaudio-alsa, вы сможете использовать alsamixer для выбора правильной звуковой карты (ваша система по умолчанию использует несуществующую звуковую карту.

ps Да, вы правы, ваш докер предположительно подключается к импульсному аудиосерверу через IP-маршрутизацию.

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

вы также должны попробовать

Адамканнингтон прокомментировал 6 января 2021 г.

Спасибо - через alsamixer или amixer я могу поменять звуковую карту, но вопрос, на какую?

повторы прокомментированы 8 января 2021 г. •

@adamcunnington Вы также можете проверить свои аудиоустройства следующим образом:

@ameeno Есть ли способ подключить микрофон? Пробовал записывать звук с импульсного звукового устройства, но не получилось. Однако я могу прекрасно воспроизводить звуки.

Когда я запускаю pactl info, он говорит:

Обновление:

Изменение записи=1 включает микрофон.

dcharlespyle прокомментировал 15 января 2021 г. •

Pulseaudio 5.0 также позволяет микрофону работать между WSL 2 и Windows, а на моей машине звук можно записывать с частотой до 192 000 Гц. Но в WSL 2 приведенные выше примеры больше не работают. Вот что я поместил в свой файл ~/.bashrc, чтобы он работал правильно:

Просто замените YOURHOSTNAME своим фактическим именем хоста, а числа – первыми числами в вашем диапазоне IP-адресов в вашей локальной сети.

Вышеизложенное можно использовать как основу для создания ярлыков для программ Linux, которые можно запускать и в Windows.

Вот пример, который разрешает пересылку звука и X11 в программе "Файлы" (что позволит запускать видео- и аудиофайлы непосредственно из приложения "Файлы" и иметь возможность их видеть и слышать):

C:\Windows\System32\wsl.exe LIBGL_ALWAYS_INDIRECT=Да IP=$(host YOURHOSTNAME | grep 192. | tail -1 | awk '< print $NF >' | tr -d '\r') DISPLAY= $IP:0.0 PULSE_SERVER=tcp:$IP dbus-launch --exit-with-session nautilus

Некоторым приложениям все это не нужно. Большинство приложений CLI можно запускать без переадресации X11. Links2 требует его, а Lynx - нет (если только вы не хотите запускать звук и смотреть видео с него в качестве новинки). Этот ярлык не скрывает консоль, но полезен для устранения неполадок приложений Linux. Я просто настроил их так, чтобы окна консоли запускались в свернутом виде, и если мне нужно их увидеть, просто щелкните их, чтобы восстановить их, чтобы прочитать вывод. Приведенные выше примеры командной строки работают независимо от IP-адресов WSL 2 и хоста Windows. Но еще одна странность с pulseaudio 5.0 от x2go заключалась в том, что мне приходилось организовывать файлы в соответствии с организацией файловой системы Linux на хост-компьютере, просто чтобы заставить его работать правильно. Но он отлично работает для стерео и для записи. Пока не понял, как заставить его работать со звуком 5.1 Windows coreaudio, но надеюсь, что со временем смогу.

image

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

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

Следуя этим инструкциям, вы получите работающий звук с использованием PulseAudio в Windows/WSL2 как для консольных приложений, так и для приложений с графическим интерфейсом (однако в статье не рассматривается запуск графических приложений на WSL2). При этом микрофон не будет работать, по крайней мере, у меня он не работал (а мне, например, он и не был нужен).

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

Если вы все еще используете WSL1, узнайте, как перейти на WSL2 здесь. Вы можете проверить, используете ли вы уже WSL2, запустив wsl -l -v в Windows PowerShell. Каждая машина, использующая WSL2, должна быть указана здесь с 2 в качестве их ВЕРСИИ; если вы не видите номер версии или видите сообщение об ошибке, у вас есть WSL1.

Ниже приведен снимок экрана, показывающий терминал Windows под управлением Ubuntu/WSL2, где я использую музыкальный проигрыватель консоли cmus для воспроизведения музыки. Вы не можете услышать музыку, чтобы проверить, работает ли она на самом деле, поэтому этот скриншот довольно бесполезен, но мне нужен был скриншот, чтобы использовать его в качестве миниатюры статьи 🙂️.

cmus windows terminal wsl2

В качестве совершенно не относящегося к делу примечания: если вы хотите использовать cmus на WSL2, отредактируйте его файл ~/.config/cmus/rc (создайте его, если он не существует) и добавьте set output_plugin=pulse, чтобы получить его звук. вывод для работы на рабочем столе Windows.

Как заставить звук работать в WSL2

<р>1. Загрузите PulseAudio для Windows.

Последний выпуск PulseAudio для Windows 10, который мне удалось найти, — это версия 7 отсюда, созданная для X2Go. Вы можете либо перейти по этой ссылке и нажать «Снимок», чтобы загрузить PulseAudio для Windows, либо нажать здесь, чтобы загрузить его.

При этом загружается архив .tar.gz. Извлеките этот архив и переименуйте папку, содержащую pulseaudio.exe и другие исполняемые файлы и файлы PulseAudio, в pulse и скопируйте эту новую папку pulse в C:\ (так что у вас должно быть, например, C:\pulse\pulseaudio.exe ).

<р>2. Настройте PulseAudio для Windows.

Создайте файл с именем config.pa в C:\pulse\ . Чтобы иметь возможность переименовывать расширение файла в Windows, необходимо включить отображение расширений файлов в проводнике.

В этот файл C:\pulse\config.pa добавьте следующее и сохраните файл, когда закончите:

Здесь мы разрешаем подключения с 127.0.0.1, который является локальным IP-адресом, и 172.16.0.0/12, который является пространством по умолчанию (172.16.0.0 - 172.31.255.255) для WSL2.

<р>3. Настройте PulseAudio в WSL2.

На WSL2 (Ubuntu или что вы используете):

Убедитесь, что у вас установлена ​​libpulse0, иначе это не сработает. Его имя и команда для его установки зависят от используемого вами дистрибутива Linux, поэтому вам нужно будет найти его и установить. В Ubuntu / Debian вы можете установить его, используя:

Все еще на WSL2 вам также потребуется отредактировать файл ~/.bashrc с помощью текстового редактора — с помощью приведенной ниже команды мы отредактируем его с помощью консольного редактора Nano:

Прокрутите этот файл до конца и вставьте туда следующее:

Здесь вы можете раскомментировать строку экспорта DISPLAY, чтобы также экспортировать переменную среды DISPLAY (я закомментировал ее по умолчанию, потому что она понадобится не всем). Это необходимо, если вы хотите использовать что-то вроде VcxSrv для запуска графических приложений из WSL2 (используя конфигурацию, описанную в этой статье, графические приложения, работающие в WSL2, будут иметь звуковую поддержку).

Когда вы закончите, сохраните файл и выйдите из Nano ( Ctrl + o , Enter, затем x сохранит файл и Nano существует). Затем создайте файл ~/.bashrc, чтобы использовать новые переменные среды:

<р>4. Установите PulseAudio как службу Windows.

Чтобы запустить PulseAudio как службу Windows, мы будем использовать NSSM. Загрузите NSSM отсюда, распакуйте загруженный архив и скопируйте исполняемый файл win64 nssm.exe в C:\pulse\ . Вы можете найти это в папке win64 в загруженном zip-архиве NSSM.

Затем найдите PowerShell в меню "Пуск" Windows, щелкните правой кнопкой мыши запись PowerShell и выберите "Запуск от имени администратора".

В PowerShell введите или вставьте:

При выполнении этой команды будет отображаться графический интерфейс NSSM. На вкладке «Приложение» используйте:

  • Путь к приложению: C:\pulse\pulseaudio.exe
  • Каталог запуска: C:\pulse
  • Аргументы: -F C:\pulse\config.pa --exit-idle-time=-1
  • Имя службы (должно быть автоматически заполнено при открытии диалогового окна NSSM): PulseAudio

В поле "Аргументы" мы используем -F , который указывает PulseAudio запускать указанный скрипт при запуске, а --exit-idle-time=-1 отключает параметр завершения работы демона после нескольких секунд бездействия. .

На вкладке "Сведения" введите PulseAudio в поле "Отображаемое имя":

Когда вы закончите со всем этим, нажмите кнопку "Установить службу".

Если позже вы захотите удалить эту службу Windows, снова запустите PowerShell от имени администратора и на этот раз выполните следующую команду, чтобы удалить службу:

<р>5. Запустите службу PulseAudio Windows.

Запустите диспетчер задач Windows, перейдите на вкладку «Службы» и перейдите к PulseAudio. Когда вы найдете службу PulseAudio, щелкните ее правой кнопкой мыши и выберите Запустить:

И мы закончили. PulseAudio теперь работает. Вы должны иметь возможность использовать аудиоприложения внутри WSL2 и слышать их аудиовыход на рабочем столе Windows 10.

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

В настоящее время WSL не поддерживает звуковые устройства. Следовательно, когда вы открываете рабочий стол или приложения с графическим интерфейсом в X410, вы не услышите ничего, кроме основных системных звонков (ex. CTRL+G). Мы надеемся, что Microsoft добавит поддержку в будущей версии WSL.

Тем временем. есть обходной путь.

ШАГ 1. Загрузите PulseAudio для Windows

На момент написания этой статьи версия 1.1 PulseAudio была доступна для Windows; это действительно старая версия, но она работает в Windows 10.

ШАГ 2. Разархивируйте файл с шага 1 в папку


ШАГ 3. Отредактируйте 'etc\pulse\default.pa'

Строка 42
FROM load-module module-waveout имя_приемника=выход имя_источника=вход
TO load-module module-waveout имя_приемника=выход имя_источника=входная запись=0

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

Это позволяет серверу PulseAudio принимать подключения только от 127.0.0.1 через TCP.

ШАГ 4. Отредактируйте 'etc\pulse\daemon.conf'

Строка 39
FROM ; exit-idle-time = 20
TO exit-idle-time = -1

Если для этого параметра установлено неотрицательное значение, сервер автоматически завершает работу, когда последний клиент отключается, и время проходит больше, чем указано в этом параметре (в секундах).

ШАГ 5. Тестовый запуск файла bin\pulseaudio.exe

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


При первом запуске pulseaudio.exe вы увидите всплывающее окно Предупреждение брандмауэра Windows, в котором вас спросят, хотите ли вы разрешить другим устройствам подключаться к серверу. Поскольку мы будем использовать только петлевой адрес (= 127.0.0.1), вам следует выбрать «Отмена»; вам не нужно разрешать другие устройства.


Если произошла ошибка, сервер немедленно завершает работу. В этом случае перейдите к шагу 3 и убедитесь, что вы правильно изменили строки.

Нажмите CTRL+C, чтобы остановить сервер.

ШАГ 6. Добавьте настройки, связанные с PulseAudio, в пакетный файл запуска X410

Например, если вы используете Ubuntu и создали пакетный файл, как указано в разделе «Настройка рабочего стола Xfce для Ubuntu (WSL)», попробуйте изменить его, как показано ниже:

• запустить "" /B "C:\wsl\pulseaudio\bin\pulseaudio.exe"

Вам необходимо изменить путь к pulseaudio.exe в соответствии с вашими настройками.

• экспорт PULSE_SERVER=tcp:127.0.0.1;

Чтобы сообщить приложениям Linux, что сервер PulseAudio работает по адресу 127.0.0.1, нам нужно экспортировать переменную среды PULSE_SERVER.

• taskkill /IM pulseaudio.exe /F

Pulseaudio.exe имеет собственный переключатель командной строки --kill для завершения запущенного экземпляра. Но, похоже, это не работает в Windows 10.

ШАГ 7. Наслаждайтесь звуком!


Известные проблемы

Сервер PulseAudio не может быть корректно завершен. Если вы хотите остановить сервер, вам нужно использовать диспетчер задач Windows или команду taskkill.exe, чтобы принудительно остановить его.

На момент написания этой статьи текущая версия PulseAudio — 12.2. В этом посте используется версия 1.1, и вы, вероятно, заметили различные проблемы с производительностью. Например, если вы наблюдаете неожиданное торможение при воспроизведении видео, возможно, это вызвано тем, что сервер PulseAudio не справляется с воспроизведением видео.


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

<р>1. Загрузите PulseAudio для Windows и распакуйте

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

После того, как это будет сделано, вы можете извлечь его куда хотите, я извлек его в C:\Program Files\pulse.

<р>2. Настройте конфигурацию

В каталоге pulse перейдите в etc\pulse, здесь вам нужно будет отредактировать 2 файла.

В default.pa вам нужно отредактировать строку 42 из

и добавьте эти команды вверху (или раскомментируйте, а затем отредактируйте их):

Второй файл, который вам нужно отредактировать, это daemon.conf, в строке 39 и изменить время простоя выхода следующим образом:

<р>3. Запуск PulseAudio

Теперь PulseAudio настроен, для его запуска нужно просто использовать

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

<р>4. WSL

Я использую Ubuntu с оболочкой bash, однако концепция для дистрибутивов/оболочек должна быть примерно такой же

Экспортировать IP-адрес компьютера Windows в переменную PULSE_SERVER

И теперь это должно работать!

Если вы хотите, чтобы эта переменная назначалась при создании оболочки, просто добавьте ее в файл ~/.bashrc или эквивалент оболочки, как вы сделали бы с переменной DISPLAY для пересылки X.

Источники и вдохновение:

EDIT: добавлена ​​часть о daemon.conf, о которой я забыл, спасибо u/zupatol!


Меня всегда удивляло, почему люди продолжают использовать DNS-серверы в качестве IP-адреса Windows.

Пользователь мог изменить DNS-сервер на что-то вроде 8.8.8.8, а также может иметь несколько DNS-серверов.

IP-адрес Windows должен быть получен от шлюза по умолчанию:

WIN10_IP=$(route -n | grep "^0\.0\.0\.0" | awk '')

Я почти уверен, что мой DNS-сервер 1.1.1.1 или что-то в этом роде, но Ubuntu говорит, что это нужно делать на странице WSL для отображаемой переменной.

Похоже, что это не сработает для WSL2, проблема в том, что поскольку он работает на виртуальной машине, у него теперь другой IP-адрес, чем у хоста.

Вы упоминаете редактирование двух файлов в \etc\pulse, но описываете изменения только в default.pa. Согласно вашему последнему источнику, вам также нужно это:

Редактировать etc\pulse\daemon.conf, строку 39

Спасибо, эта часть совершенно вылетела из головы!

Мой звук наконец-то работает в WSL2! Большое спасибо u/KeystrokeCascade! :D

У меня возникли проблемы со звуком при использовании удаленного рабочего стола. Firefox работает без звука. Если я ввожу команду docker/jellyfin, это WSL 2, и аудио, и видео в порядке при просмотре в браузере (localhost:8096) на том же компьютере (без RDP) или на сетевом ПК (:8096).

Прежде чем разработать решение, опубликованное u/KeystrokeCascade, я обнаружил, что IP-адрес WSL 2 — 172.20.39.164, а после перезагрузки — 172.25.196.164. Итак, если я ввожу

load-module module-native-protocol-tcp port=4713 auth-ip-acl=172.16.0.0/12

load-module module-esound-protocol-tcp port=4714 auth-ip-acl=172.16.0.0/12

будет ли это работать, поскольку x.16.0.0 отличается?

Я не уверен, что это сработает в вашем случае, но 172.16.0.0/12 имеет /12 в конце, что указывает на то, что это маска подсети с диапазоном от 172.16.0.0 до 172.16.255.255, все возможные адреса, которые WSL2 может назначить виртуальной машине.

Что бы это ни стоило, версия 1.1 pulseaudio у меня не работала. Попробовал версию x2go и та-даа! Нет проблем. Запустил его с помощью pulseaudio --exit-idle-time=-1 -F default.pa (после изменения настроек default.pa, как описано)

OP не упоминает, что вам может потребоваться добавить правило брандмауэра, разрешающее доступ к pulseaudio, или что PULSE_COOKIE может быть установлен в WSL для предоставления доступа любому клиенту pulseaudio с доступом к этому файлу, который WSL имеет в /mnt/ c/Users/USER/.pulse-cookie по умолчанию вместо того, чтобы предоставлять доступ к вашему локальному серверу pulseaudio для всей подсети, которая может включать устройства, не поддерживающие WSL (172.16.0.0/12 используется многими другими, помимо WSL). Это означает вам не нужно включать параметры auth-ip-acl в default.pa.

Внесите следующие изменения в etc/pulse/default.pa в Windows:

etc/pulse/daemon.conf в Windows нужны только эти две строки

Запустите pulseaudio (я использую приведенную ниже команду в пакетном файле в моей папке автозагрузки, возможно, потребуется исправить путь к pulseaudio.exe, если расширение переменной не работает)

Убедитесь, что в вашем брандмауэре разрешена функция pulseaudio.exe. Теперь это безопаснее, чем в конфигурации OP, поскольку вы не разрешаете доступ ко всей подсети.

Установите pulseaudio в WSL из диспетчера пакетов и задайте следующие переменные среды в своем сеансе

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