Проблема с наушниками PulseAudio

Как описано в Заметки Lion по исходному коду Unix 6 ранние версии Unix имели файл на диске, где и файлы, и каталоги были представлены на диске структурами inode. Был специальный бит, который указывал, что содержимое файла было каталогом. Каждый индексный дескриптор имел ссылку на собственный индексный дескриптор, который позволял файлу знать, в каком каталоге он находится. Исключением был каталог '/', который принадлежал самому себе. Также была ссылка на содержание. Если inode не имел содержимого, его можно было вернуть в свободный список. Поскольку каталог был просто благословенным файлом, даже пустой каталог должен иметь содержимое, чтобы не допустить его сборку мусора. Таким образом, .. был ссылкой inode на родительский inode и. был там, чтобы указать, что каталог все еще можно использовать. rmdir (вызвав unlink) может удалить. каталог, если бы не было другого содержимого, а затем индексный дескриптор переместился бы в список свободных, когда на него больше не было ссылок.

3
21.09.2016, 03:46
1 ответ

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

Чтобы решить эту проблему, я полностью удалил pulseaudio.

apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse

Вернулся к моему старому файлу alsa asound.conf и добавил ввод для переменной окружения устройства.

/ETC/ASOUND.CONF

defaults.pcm.!card Device
defaults.ctl.!card Device
defaults.pcm.!device { 
        @func igetenv  
                vars [ ALSA_PCM_DEVICE ]  
                default 0 
}

ЭТО РАБОТАЕТ! («Устройство» - это имя моей USB-карты)

Мне нужно установить переменные среды при переключении на карту с несколькими аудио устройства вывода.

команда:> ALSA_PCM_CARD = CARD ALSA_PCM_DEVICE = DEVICE firefox

Я не мог установить ALSA_PCM_DEVICE, не добавляя его в asound.conf, очевидно, этого было недостаточно, несмотря на то, что он был определен в /usr/share/alsa/alsa.conf.

Причина в том, что plughw использует ALSA_PCM_DEVICE и, если он не установлен, возвращается к defaults.pcm.device, а dmix (/ usr / share / alsa / pcm / dmix.conf) использует только defaults.pcm.device, без проверки ALSA_PCM_DEVICE

Вот почему вы должны явно переопределить defaults.pcm.! device, чтобы оно проверяло переменную среды ALSA_PCM_DEVICE

EDIT (ОБЩАЯ КОНВЕРСАЦИЯ НА IRC - Переменные среды ALSA)

Если у вас нет необычного встроенного устройства / драйвера.

Alsa должна предоставить аналогичную цепочку воспроизведения "default" = plug-> dmix-> hw.

Он должен работать из коробки вообще без ~ / .asoundrc.

Просто по умолчанию цепочка заканчивается на карте 0 устройства 0.

Или, технически, это: (1) по умолчанию используется среда ALSA_PCM_CARD карты, если она не установлена ​​(2) по умолчанию используется переменная ALSA_CARD env.variable, если она не установлена ​​(3) по умолчанию используется переменная alsa "defaults.pcm.card" и если это не установлено (4), по умолчанию используется карта 0.

Так, например, чтобы все приложения воспроизводились на звуковой карте с именем «PCH», вам нужно всего 2 строки в ~ / .asoundrc (ваш только для пользователя) или /etc/asound.conf (для всех пользователей):

defaults.pcm.! card PCH

defaults.ctl.! card PCH

Для отмены этого и воспроизведения на карту с именем "Headset" вы можете запускать приложения как: env ALSA_CARD = Headset some-app-here . Вы можете увидеть имена карт в выводе cat / proc / asound / cards или aplay -l . Технически вы также можете использовать номера карт ( env ALSA_CARD = 2 some-app-here ), но номера могут измениться при перезагрузке, поэтому обычно лучше использовать имена.

РЕДАКТИРОВАТЬ (ОБЩАЯ ИНФОРМАЦИЯ ПО IRC - PulseAudio)

Pulseaudio делает это иначе. Вместо добавления промежуточных модулей он добавляет глобального демона pulseaudio, и этот демон играет непосредственно с "hw" pcm. Все остальные приложения должны играть с этим демоном, потому что пока он запущен, никто другой не может играть с «hw». Вот почему у меня было «устройство или ресурс занят».

Таким образом, типичная цепочка воспроизведения pulseaudio: default = "type pulse" module -> pulseaudio daemon -> hw. Вы не должны использовать «hw», «plughw» или «dmix» с pulseaudio - они не могут работать вместе. Вместо этого я должен был определить pcm.! Default {type pulse} (на самом деле pulseaudio обычно делает это за вас автоматически)

С установленным pulseaudio вам просто нужен pcm.! default {тип импульса}. И в большинстве дистрибутивов pulseaudio делает это автоматически. (в Archlinux он упакован как отдельный пакет "pulseaudio-alsa", который в основном имеет только эту конфигурацию alsa и ничего больше)

2
27.01.2020, 21:27

Теги

Похожие вопросы