Настройка звука в linux с pulse

Конфигурация

Пакеты

Установка GNOME включает в себя все необходимые инструменты и пакеты по умолчанию. В других окружениях pulseaudio часто устанавливается по зависимостям, но без средств управления. Поэтому для управления демоном pulseaudio может потребоваться вручную установить следующие пакеты:

  • pavucontrol — регулирование уровня громкости PulseAudio
  • paprefs — настройки PulseAudio
  • pulseaudio-utils — утилиты PulseAudio
  • padevchooser — выбор устройств PulseAudio
  • paman — менеджер PulseAudio
  • alsa-plugins-pulse (-32bit) — подключаемый модуль PulseAudio для библиотеки ALSA

Использование Pulseaudio как бэкэнда ALSA по умолчанию

Чтобы все приложения, поддерживающие ALSA, но не поддерживающие pulseaudio, воспроизводили звук через pulseaudio, вам требуется установить пакет alsa-plugins-pulse (в том числе пакет -32bit, если у вас 64-битная платформа) и задать следующую переменную окружения:

export ALSA_CONFIG_PATH=/etc/alsa-pulse.conf

В сеансе GNOME эта переменная задаётся по умолчанию. Если вы желаете сделать эту переменную окружения общесистемной, вставьте вышеприведённую строчку в /etc/environment (включая команду export).

openSUSE 11.2, KDE 4.2

PulseAudio не используется как звуковой сервер по умолчанию. Выполните от имени root´а:

setup-pulseaudio —enable

чтобы сделать его сервером по умолчанию. Если вы наоборот хотите отключить pulseaudio совсем и откатиться к ALSA для всех приложений GNOME, пожалуйста прочтите ниже раздел «Полное отключение pulseaudio (откат к ALSA)».

Отключение модуля OSS

Некоторые приложения, использующие аудиовывод OSS, не будучи корректно сконфигурированы, могут прерывать pulseaudio так, что pulseaudio не может присоединиться к аппаратному устройству вывода. Это можно предотвратить, запустив

rmmod snd-pcm-oss

Из-за зависимостей часто оказывается невозможным удалить pulseaudio полностью. Чтобы предотвратить использование pulseaudio, следует отключить автоматический запуск демона, задав autospawn = no в /etc/pulse/client.conf

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 именно из-за того что выбран не тот порт записи

Installation

For reference, I have the Windows Fall Creators Updated installed, and I will use the Ubuntu distro as an example. If you use a different distro, you may need some additional tweaks.

After the Windows 10 Fall Creators Update, WSL is out of beta and the installation is much easier. To enable WSL, you just need to turn on Windows Subsystem for Linux among Windows Features, and install your preferred distro from the Windows Store. A more detailed guide can be found on MSDN.

Accessing Windows Files

Accessing Windows files from WSL is quite straightforward. By default, all your drives are mounted automatically. For instance, the folder under can be accessed via (note that casing matters under Linux).

Tweaking the Color Scheme

The default color scheme of Windows Console () is not that great. Since the Fall Creators Update, Windows Console is give more love and a lot of improvements have been made. However, changing the color scheme using the default settings panel is still not an enjoyable experience. Luckily, the Windows Console team introduced the Windows Console Colortool recently, making changing color schemes much easier. It supports iTerm2 color scheme files, and you can find a bunch of nice color schemes here.

Наконечник Quick Pulse Audio

С установленным эквалайзером аудиосистема Linux работает намного лучше. Тем не менее, Pulse Audio — это очень запутанный инструмент, и в настоящее время не многие пользователи знают, как легко им управлять. Вот почему в этом разделе мы поговорим об инструменте, который каждый может установить, чтобы легко получить контроль над сложной аудиосистемой Linux. Все начинается с установки инструмента Pavucontrol.

Это графический инструмент управления аудиосистемой Linux. С его помощью пользователи могут делать все, что угодно.

Другие Linux

Инструмент Pavucontrol легко найти во многих дистрибутивах Linux под названием пакета «pavucontrol». Откройте диспетчер пакетов и найдите его или что-то подобное, например, «управление импульсным звуком».

использование

Внутри Pavucontrol есть пять вкладок; «Воспроизведение», «запись», «устройства вывода», «устройства ввода» и «конфигурация». Для начала, вкладка воспроизведения представляет любую программу, в настоящее время использующую звуковую систему Pulse. На этой вкладке регулируйте громкость воспроизведения каждой программы.

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

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

Следующая вкладка — «устройства ввода». Эта вкладка позволяет пользователям управлять громкостью каждого отдельного микрофона и настраивать устройство для записи.

Вкладка «вывод» аналогична вкладке «ввод». Как и секция ввода, вывод позволяет пользователю легко управлять громкостью воспроизводящих устройств индивидуально.

Наконец, в разделе конфигурации показано все аудиооборудование. В этом разделе пользователи могут легко включать и выключать отдельные динамики, микрофоны и т. Д. Чтобы установить устройство по умолчанию, нажмите «кнопку возврата». Это делает это аудиоустройство по умолчанию над всеми остальными.

Проблемы

Отсутствует звук после установки

Известны случаи, когда звук отключён по умолчанию, и это не отражается в микшере KDE. Для исправления этого запустите (возможно вам потребуется установить его), щёлкните его пиктограмму в лотке и выберите «Регулирование громкости». Убедитесь, что ничего не отключено, даже после того, как вы запустили воспроизведение звука через приложение (это приложение должно отображаться во вкладке «Воспроизводится»).

Если звук по-прежнему не работает или инструменты pulseaudio не действуют, постарайтесь добавить своего пользователя в группы «pulse» и «pulse-access» (Yast > Управление пользователями и группами > > Править > Подробнее > Дополнительные группы). Чтобы эффект возымел действие, вам потребуется выйти и снова войти в систему.

Неполадки при воспроизведении аудио

Отредактируйте /etc/pulse/daemon.conf: раскомментируйте строки default-fragments и default-fragment-size-msec, и измените их значения с умолчательных 4 и 25 на 16 и 21.

Полное отключение pulseaudio (откат к ALSA)

Под openSUSE 11.2 pulseaudio является предпочитаемой аудиоподсистемой для всех приложений GNOME. Это может приводить к различным проблемам сосуществования, особенно по отношению к phonon, звуковой подсистеме KDE, использующей ALSA. Весьма типичный симптом — неспособность аудио ALSA вести планирование в реальном времени (или, точнее, близком к реальному времени), в итоге вызывающая задержки и/или обрывы в звучании. Многие обнаружили, что полное отключение pulseaudio и, таким образом, перевод приложений GNOME на использование ALSA, сработало успешно. Для выполнения этого проделайте следующее:

Отключите pulseaudio:

setup-pulseaudio —disable

  • Удалите все пакеты pulseaudio кроме libpulse-mainloop-glib0 и libpulse0, так как они требуются всем приложениям GNOME (поскольку они по умолчанию компилируются с pulseaudio).
  • Скройте библиотеки, предоставляемые пакетами libpulse-mainloop-glib0 и libpulse0, чтобы заставить приложения GNOME откатиться к ALSA. Для этого передвиньте их, отдав следующие команды от имени root´а (подразумевается openSUSE 11.2 x86_64):

cd /usr/lib64

md HIDDEN
mv *pulse* HIDDEN

ldconfig

Заметьте, что под $HOME/.pulse у вас есть правильно настроенные конфигурационные файлы (например с того времени, когда pulseaudio был задействован), последний из вышеописанных шагов по скрыванию библиотек pulseaudio может не потребоваться. Однако если вы случайно (или намеренно) удалите $HOME/.pulse, приложения GNOME вновь потеряют звук. Независимо от содержимого /etc/asound.conf перемещение библиотек является единственным гарантированным методом принудительного отката на ALSA.

Используйте совместимый с ALSA микшер (например kmix под KDE или alsamixer в терминале) и убедитесь, что все интересующие вас каналы не отключены.

Заметьте, что это обходной путь, а не определённое решение: если пакет libpulse-mainloop-glib0 и/или libpulse0 обновлён, вам придётся снова отдать вышеуказанные команды, чтобы передвинуть библиотеки pulseaudio.

Взаимодействие окружения Windows и окружения подсистемы Linux

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

Для начала поговорим о том, где находится файловая система нашей WSL. Ее можно найти по адресу . При этом не рекомендуется писать туда файлы, поскольку в Windows используется довольно капризная NTFS, а в Linux — ext3/ext4. Можно ненароком «поломать» что-нибудь. А вот читать можно спокойно.

Возможно, это проблема со временем уйдет в прошлое, когда в ядре Linux появится-таки NTFS-драйвер от Paragon, который не так давно стал открытым. Ожидается, что это произойдет в версии 5.15.

Если нужно получить доступ к диску Windows, то он будет смонтирован в в соответствии со своими буквами. То есть, системный диск (если у вас Windows на диске C) примонтируется как , условная флешка — как (кто еще помнит, что по умолчанию она получала именно букву F?), а диск с любимыми фильмами и музыкой — (или какая там у вас буква?).

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

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

Пример:

— смотрим папку

— содержимое файла txt

— читаем данные.

— смотрим содержимое папки с установленными программами (как видим, доступ закрыт, хотя просмотреть можно)

winitpro.ru

Если запускать приложения Windows прямиком из Linux, это можно сделать командами:

  1. — «Проводник»
  2. — «Калькулятор»
  3. — штатный «Блокнот»
  4. — WordPad
  5. — Paint,
  6. — календарь

А вот погоду можно посмотреть иначе — .

Для удобства можно установить mc — Midnight Commander, который будет работать в оболочке Bash в Linux и в командной строке Windows.

Команда проста:

А вот так выглядит двухпанельный файловый менеджер, где с одной стороны Windows, с другой — Linux. Похоже, старая шутка про два диска обретает новый смысл.

winitpro.ru

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

Для приложений с X-сервером нужно еще передавать переменную окружения . А папку, в которой работает то или иное приложение, надо выбирать уже внутри WSL через . Например, .

Как мы говорили ранее, в первой версии WSL может просматривать перечень процессов Linux в «Диспетчер задач» Windows. А вот в самой подсистеме видны только Linux-процессы.

Зато команды в Linux и в Windows дают одинаковые данные, а веб-сервер, запущенный в Linux, окажется доступным и в Windows. Наоборот — то же самое.

Особенности и ограничения WSL и WSL 2

Не секрет, что NT-системы и Linux-системы отличаются во многом. И потому первая версия WSL, созданная Microsoft, была, по сути, попыткой реализации всех интерфейсов ядра Linux в рамках NT. Если проще — все интерфейсы, которые существуют в обеих системах, должны были реализовываться один к одному (да-да, ошибки, баги и прочее — тоже).

Если же в Linux интерфейс был, а в NT его не было, то его и не надо было реализовывать напрямую. А если надо — то с помощью «костылей». Само собой, такой подход сделал первую WSL медленной, хотя и реализовывал многие особенности, например, те же Linux-процессы в «Диспетчере задач».

Также WSL приходилось иметь дело с файловой системой NTFS, которая под Linux пока что работает не очень. Из-за этого падала скорость работы в целом. Однако преимущества такого подхода тоже очевидны — полная открытость и контроль. Ядро NT «знает» о ядре Linux и может отслеживать процессы.

Но маркетинг победил, когда выпустили WSL 2. Это уже полноценная виртуальная машина, которая «вшита» в Windows. Настоящий гибрид. При этом Linux в этом случае был «черным ящиком» для NT, поскольку внутренняя логика никак не отслеживалась. Это позволило ускорить работу, но при этом уменьшило контроль со стороны пользователя.

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

Консольные инструменты

pactl

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

pacmd

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

Проблема в том, что pactl умеет не всё, а pacmd не так удобен в использовании. В дальнейшем будем придерживаться pactl, однако если его функционала не хватит — используем pacmd.

patricks

Утилита для управления демоном PulseAudio

Особенности:

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

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

ootync@rtfm ~ $ patricks ls sinks
>Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
 Sink#1 <alsa_output.pci-0000_00_2b.0.hdmi-stereo>

Внимательнее присмотретсья к Sink #0:

ootync@rtfm ~ $ patricks ls sink 
Sink# <alsa_output.pci-0000_00_1b.0.analog-stereo>
Is Default: yes
Description: Internal Audio Analog Stereo
State: RUNNING
Driver: module-alsa-card.c
Owner Module: Module#4 <module-alsa-card>
Sample Spec: s16le 44100ch 2Hz
Channel Map: front-left, front-right
Mute: no
Volume: 25%
Base Volume: 100
Latency: 199703
Configured Latency: 210000
Flags: HARDWARE, HW_MUTE_CTRL, HW_VOLUME_CTRL, DECIBEL_VOLUME, LATENCY
Ports: analog-output, analog-output-headphones
Active Port: analog-output
Monitor Source: Source#0 <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
Id: 
Name: alsa_output.pci-0000_00_1b.0.analog-stereo
Proplist: 33 items

Внимательнее посмотреть на список портов Sink #0:

ootync@rtfm ~ $ patricks ls sink  ports
>#0 analog-output: "Analog Output" prio=9900
 #1 analog-output-headphones: "Analog Headphones" prio=9000

Переключить Sink #0 на следующий порт

ootync@rtfm ~ $ patricks set sink  port next
Sink# <alsa_output.pci-0000_00_1b.0.analog-stereo>: analog-output-headphones

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

ootync@rtfm ~ $ patricks mv sink next all
Moving 1 inputs {65} to sink "alsa_output.pci-0000_00_1b.0.analog-stereo"...
Sink# <alsa_output.pci-0000_00_1b.0.analog-stereo>: default sink

Общие сведения

PulseAudio обеспечивает:

  • Программное сведение нескольких аудиопотоков с обходом любых ограничений, накладываемых оборудованием.
  • Сетевую прозрачность, позволяющую приложению, работающему на одной машине, проигрывать или записывать аудио, запущенное на другой.
  • Абстракцию звукового программного интерфейса, снижающую потребность во множестве бэкэндов в приложениях ради подержки ими широкого спектра звуковых систем.
  • Общую аппаратную абстракцию, предоставляющую возможность осуществления таких вещей, как индивидуальные уровни громкости у приложений.

PulseAudio поставляется с множеством подключаемых модулей. Все аудио от/к клиентов/-ам и аудиоинтерфейсов/-ам проходят через модули. Клиенты PulseAudio могут отправлять аудио на «приёмники» и принимать аудио из «источников». Клиентом может быть GStreamer, xinelib, MPlayer или любое другое аудиоприложение. Только драйверы устройств/аудиоинтерфейсов могут быть либо источниками, либо приёмниками (они обычно являются аппаратными входами и выходами).

Card, Sink & Source

Известно, что у звуковой карты два типа гнёзд: входы (line in, микрофон) и выходы (наушники, line out, S/PDIF). В типовой конфигурации для каждой имеющейся звуковой карты и её «гнёзд» PulseAudio создаёт следующие объекты:

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

В PulseAudio задаётся «default Sink» и «default Source»: объекты, используемые по умолчанию для свежезапущенных приложений.
Замечу, что Sink не обязательно должен описывать физический порт звуковой карты: это абстракция приёмника потока звука. PulseAudio — штука высокоуровневая и позволяет создавать весьма «хитрые» объекты: например, Sink типа ‘NULL’ (реализуемый модулем PulseAudio module-null-sink) просто поглотит звук, а модуль module-pipe-sink позволит передавать звуковой поток через файл FIFO. Также можно создавать сетевые Sink’и, ведущие multicast-вещание или передающие звуковой поток определённому хосту. Всё это реализуется модулями PulseAudio.

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

Обзор

Для начала давайте посмотрим что у нас есть: какие объекты определены в PulseAudio. Рекомендую запустить фоновую музыку чтобы было на что смотреть
Команда

pactl list

покажет длинный список существующих объектов.

У каждого объекта есть набор описывающих его полей, а также специальное поле «Properties»: список key-value свойств (обычно строковых).

У всех объектов есть index (Sink #0) — уникальный номер объекта определённого типа. Также многие объекты имеют имена (Name: ): index и Name можно использовать для обращения к конкретному объекту.

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

Sink #1 — Sink: вопроизводит звук
        State: RUNNING — Sink работает: через него проигрывается музыка
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo — Уникальное имя Sink'а
        Description: Internal Audio Analog Stereo — Текстовое описание Sink'а
        Driver: module-alsa-card.c — Используемый "драйвер": модуль PulseAudio, создавший этот Sink
        Sample Specification: s16le 2ch 44100Hz — Параметры дискретизации, количество каналов, кодирование.
        Channel Map: front-left,front-right — Звуковые каналы
        Owner Module: 5 — index модуля, создавшего этот Sink
        Mute: no
        Volume: 0:  26% 1:  26% — Громкость обоих каналов
                0: -35.42 dB 1: -35.42 dB
                balance 0.00
        Base Volume: 100% — "Базовая громкость": указывает на некоторую "неусиленную" громкость устройства вывода
                     0.00 dB
        Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor — Имя "монитора", связанного с этим Sink
                                                        (виртуальный Source: позволяет писать "звук с колонок")
        Latency: 161458 usec, configured 210000 usec — Параметры звукового лага
        Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
        Properties: ... — Всякие свойства. Там можно увидеть имя устройства Alsa, куда этот Sink отдаёт звук
        Ports: — Порты Sink'а: соответствуют физическим портам звуковой карты
                analog-output: Analog Output (priority. 9900) — Выход наушников
                analog-output-speaker: Analog Speakers (priority. 10000) — Колонки ноутбука
        Active Port: analog-output-speaker — Текущий выбранный порт: музыка у меня играет из колонок ноута.
Card #1 — Физическая звуковая карта
        Name: alsa_card.pci-0000_00_1b.0
        Driver: module-alsa-card.c
        Owner Module: 5
        Properties: ...
        Profiles: — Профили звуковой карты: выбранный пресет маппинга физических портов. 
                output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority. 6000)
                output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority. 6060)
                output:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 0, priority. 5500)
                output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority. 5560)
                input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority. 60)
                off: Off (sinks: 0, sources: 0, priority. 0)
        Active Profile: output:analog-stereo+input:analog-stereo
Source #1 — Source: позволяет записывать звук
        State: IDLE — Source бездействует: я ничего не записываю :)
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
        Description: Monitor of Internal Audio Analog Stereo
        Driver: module-alsa-card.c
        Sample Specification: s16le 2ch 44100Hz
        Channel Map: front-left,front-right
        Owner Module: 5
        Mute: no
        Volume: 0: 100% 1: 100%
                0: 0.00 dB 1: 0.00 dB
                balance 0.00
        Base Volume: 100%
                     0.00 dB
        Monitor of Sink: alsa_output.pci-0000_00_1b.0.analog-stereo — Этот Source создан как монитор 1го Sink'а:
                                                 из него можно записывать то что слышно из колонок
        Latency: 0 usec, configured 1999818 usec
        Flags: DECIBEL_VOLUME LATENCY 
        Properties: ...

Sink-Input & Source-Output

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

Каждый Sink-Input по умолчанию связываться с одним из Sink’ов и передаёт звуковой поток. PulseAudio далее определяет с чем связан Sink (например, звуковая карта) и передаёт его по назначению.
Существует особый тип Source’а: Monitor. Для каждого Sink’а может быть создан отдельный монитор, позволяющий вести запись. Так, получается запись «звука из колонок».

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: