Как мой аудиовход всегда может быть микрофоном веб-камеры?

14

Каждый раз, когда я хочу использовать Skype, я должен идти в настройках звука. И там, включите аудио вход в « веб-камеру » и снимите флажок « отключить звук ». Это довольно раздражает. Есть ли способ всегда сохранять одну и ту же конфигурацию?

Gizmoatwork
источник
1
У меня есть эта проблема также с QuickCam Logitech. После каждой перезагрузки я должен пройти через настройки и сбросить его как ввод по умолчанию, чтобы он работал. Я думаю, что это как-то связано с тем, что USB-устройства загружаются после установки звуковых настроек, поэтому импульс или alsa не «видят» USB-микрофон. К сожалению, потому что «проблема» на самом деле не проблема, просто неудобство, это не так важно, что я хочу закатать рукава рубашки и начать копать и редактировать файлы конфигурации.

Ответы:

14

Изменение настроек по умолчанию для PulseAudio

При запуске pulseaudio все настройки могут быть определены путем помещения пользовательских файлов конфигурации в скрытый .pulseкаталог в вашем HOME. Если эти файлы еще не существуют, вы можете использовать стандартные файлы /etc/pulse/в качестве шаблона. Большинство записей содержат подробные объяснения в этих файлах.

  • ~/.pulse/default.pa загрузить модули и определить значения по умолчанию
  • ~/.pulse/client.conf настроить клиент для звукового сервера
  • ~/.pulse/daemon.conf определить частоты дискретизации и буферы

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

pacmd list-sources

Затем мы редактируем следующую строку ~/.pulse/default.pa:

set-default-source [name]

и заменить [name]на имя или номер источника для нужного источника. Затем нам нужно убедиться, что источник включен, добавив эту строку:

set-source-mute [name]|[#n]> 0

Дайте название или индекс вашего источника. Вы можете добавить множество других настроек, на которые есть ссылки в PulseAudio Wiki (теперь на странице man:) man pulse-cli-syntax.

Перед изменением файлов конфигурации рекомендуется сначала проверить все команды через интерфейс командной строки. Это можно открыть с pacmd помощью терминала

Takkat
источник
Там нет default.pa в моей папке .pulse. Должен ли я создать новый файл с одной строкой: set-default-source x?
Сделать
3
@ Так что настройки по умолчанию находятся в /etc/pulse/default.pa. Используйте этот файл или скопируйте его ~/.pulseперед редактированием.
Таккат
Для полноты картины: в качестве имени устройства ввода необходимо написать то, что написано внутри угловых скобок вывода pacmd list-sources. Т.е. с моего устройства это было set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Привет-ангел
@ Привет-Ангел: спасибо за это - ответ пришел от гораздо более старой версии pulseaudio. Теперь мы можем использовать собственное название раковины.
Таккат
6

Я согласен с тем, что проблема в том, что Pulseaudio не устанавливает USB-устройство по умолчанию, поскольку оно отсутствует при запуске импульса.

Так что мое решение - подключиться к системе, которая замечает, когда подключено USB-устройство ... UDEV!

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

Во-первых, выяснить вещи

USB Id

Первым шагом является подключение вашей веб-камеры и поиск волшебных поставщиков и номеров продуктов, набрав

lsusb

Я использую Microsoft Lifecam, и она показывает как

Bus 001 Device 013: ID 045e:072d Microsoft Corp.

важная часть 045e: 072d

Pulseaudio устройство

Затем, когда веб-камера подключена, узнайте имя устройства pulseaudio. Тип

pacmd list-sources

Опять же, я ищу строку, которая начинается, а name:затем что-то о Microsoft Lifecam ... вот оно

name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>

так что мое имя устройства pulseaudio будет alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Правила UDEV

Затем я создал новое правило udev, которое срабатывает, когда вставлено USB-устройство с vendor = 045e и product = 072d. Чтобы создать правило, создайте новый файл с именем /etc/udev/rules.d/SOMETHING.rules (я назвал мой файл /etc/udev/rules.d/95-webcam-mic.rules).

Поместите эту строку в файл

SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"

Не забудьте заменить ATTR {idVendor} и ATTR {idProduct} значениями для вашей веб-камеры.

Это правило запускает скрипт для установки USB-устройства для ввода, то есть RUN+="/usr/local/bin/webcam-mic" части.

Наконец, установите веб-камеру для ввода

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

pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

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

Итак, у нас есть 2 варианта.

  1. Быстро и грязно . Заставить правило udev выполнить su james -c pacmd set-default-source... это слишком неправильно. Я даже не могу закончить ввод команды. Что делать, если вы меняете веб-камеры? Что если вы установите это для другого пользователя?

  2. Чуть чище . Запустите скрипт, который считывает файл по умолчанию, в котором есть имя устройства pulseaudio и ваше имя пользователя. Если вы хотите, чтобы файлы были на GitHub. Сначала сценарий /usr/local/bin/webcam-mic. Файл по умолчанию /etc/default/webcam-micпросто должен определить 2 переменные оболочки, согласно комментарию в гисте. Поместите скрипт в /usr/local/bin/и сделайте его исполняемым. Затем поместите в него файл настроек по умолчанию /etc/defaults/и отредактируйте его так, чтобы использовать ваше имя пользователя и устройство pulseaudio, использованное ранее.

Удачи!

Джеймс Митчелл
источник
Любой шанс, что вы можете загрузить эти сценарии снова; они, кажется, исчезли из пастбина?
ej159
Я поместил скрипт в GitHub и обновил ответ.
Джеймс Митчелл
2

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

У меня было две проблемы с решением Takkat. Во-первых, я понял, что должна быть задержка после запуска, прежде чем произойдет переключение на микрофон (я использую команду 'sleep' в своем решении ниже). Кроме того, команда «set-default-source» работала для включения USB-микрофона, но каким-то образом Skype не распознал это и продолжал использовать внутренний микрофон.

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

Затем из терминала введите:

pacmd

Оттуда введите:

list-cards

В выходных данных найдите индексный номер USB-аудио, который вы хотите (в моем случае это был «1»). Затем взгляните на строки, перечисленные в разделе «Профили» для карты по умолчанию и карты USB. Они должны быть такими же, как те, что перечислены в pavucontrol, и могут быть что-то вроде 'ouput: input + output', 'off' или 'input: analog-mono' и т. Д. Все еще в командной строке pacmd, команда set-card-profile <index number> <profile name>должна измениться настройки в павуконтроле. Здесь мы хотим переключить внутренний звук с дуплексного режима на выходной, а USB - на вход.

Найдя соответствующие профили, мы хотим создать команду запуска, чтобы изменить несколько параметров сразу после запуска. Чтобы создать команду запуска, откройте тире и найдите «автозагрузка приложений», затем нажмите «добавить», затем введите имя по вашему выбору и соответствующую команду ниже.

После проб и ошибок моя команда запуска в итоге выглядела так:

bash -c "sleep 30 && pacmd set-card-profile 0 output:analog-stereo && pacmd set-card-profile 1 off && pacmd set-card-profile 1 input:analog-mono"

Объяснение: Я обнаружил, что команда 'sleep' была необходима, это означает, что команда выполняется после паузы, которую я установил на 30 секунд (я думаю, что это может быть меньше, поиграйте с этим). Следующая команда (после '&&') должна получить стандартный (внутренний) профиль карты для переключения только с ввода + вывода (дуплекс, по умолчанию) на вывод. Следующая команда для отключения звуковой карты USB (в моем случае это номер «1»). Последняя команда для включения этой же карты в режиме «input: analog-mono»

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

Теперь при запуске мой USB-микрофон готов к использованию через 30 секунд, и Skype использует правильный микрофон.

Джеффри
источник
0

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

helios66
источник
1
Спасибо за вашу помощь, но это то, чем я сейчас занимаюсь. Однако я не вижу способов сделать это настройкой по умолчанию. Время от времени мне придется делать это снова, потому что настройки изменились бы.
Gizmoatwork