ALSA: як тимчасово змінити вихідний пристрій


15

Я хочу зробити найпростішу річ в ALSA: щоб навушники USB видавали звук замість внутрішнього динаміка мого планшета. Я не хочу , щоб змінити конфігураційні файли , такі як asound.rcабо alsa.confабо asound.confі постійно встановлювати навушники в якості вихідного пристрою по замовчуванням шляхом зміни порядку пристроїв, я хочу , тимчасовий ефект, тільки поки я не відключити навушники. Як не дивно, я не можу гугл відповісти. Чи alsamixerздатний це робити (здається, ні)?

У Gnome ви можете легко вибрати поточний вихідний пристрій за PulseAudioдопомогою інтерфейсу GUI або CLI, але PulseAudioвін працює над ALSA! Тож мені також цікаво, як це змушує ALSA змінити вихідний пристрій?


alsamixerв інтерфейсі є опція "Вибрати звукову карту", хоча я не знаю, чи це насправді встановлює вихідний пристрій.
goldilocks

1
ні, на жаль, він просто відображає параметри цієї звукової карти та дозволяє налаштувати їх, але не перенаправляє вихід на неї
Борис Бурков,

Привіт, ви можете спробувати виконати alsamixerз терміналу і натисніть, F6щоб вибрати іншу звукову карту. :)
slackmart

@sgmart Привіт, sgmart, я зробив саме це, але він не передає звук на цей пристрій, він просто вибирає цей пристрій для настройки параметрів, а не потоки на нього.
Борис Бурков

4
Утиліта alsamixer має деякі елементи керування: Master, PCI тощо. Перевірте, чи є MMмітка (MM = звук), тому використовуйте Mклавішу з клавіатури, щоб увімкнути звук.
slackmart

Відповіді:


4

Якщо USB-пристрій вказаний як звукова карта в системі, можливо, ви захочете перевірити man amixerі використовувати unmuteпараметр.

amixer -c 1 set Master playback 100% unmute

Перевірте також інші канали (ПКМ тощо). Приклади з посібника:

   amixer -c 1 sset Line,0 80%,40% unmute cap
          will set the second soundcard's left line input volume to 80% and right line
          input to 40%, unmute it, and select it as a source for capture (recording).

   amixer -c 1 -- sset Master playback -20dB
          will set the master volume of the second card to -20dB.  If the  master  has
          multiple channels, all channels are set to the same value.

   amixer -c 1 set PCM 2dB+
          will  increase  the PCM volume of the second card with 2dB.  When both play‐
          back and capture volumes exist, this is applied to both volumes.

   amixer -c 2 cset iface=MIXER,name='Line Playback Volume",index=1 40%
          will set the third soundcard's second line playback volume(s) to 40%

   amixer -c 2 cset numid=34 40%
          will set the 34th soundcard element to 40%

Дякую, Ярі, це працює. Я читав посібники на ALSA і у вас виникає питання: чи перелічені пристроями amixer та alsamixer пристрої насправді не апаратні пристрої, а пристрої ALSA, створені плагінами alsa в /usr/share/alsa/alsa.conf та друзях? Я в основному розумію синтаксис цих плагінів, але не можу знайти визначення самих фундаментальних ключових слів, таких як "pcm" або "ctl" або "type". Не вдалося знайти жодного списку ключових слів у документації на doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Чи знаєте ви якесь джерело інформації про них?
Борис Бурков

8
Це насправді не вирішує початкове питання. Ви можете встановити параметри, але це не змінює карту, через яку виводиться аудіо.
себе

2
Якщо це насправді відповідає на початкове запитання, потрібен повний приклад. Як це зробити все, що alsamixer не може зробити? Зрозуміло, alsamixer не може переключитися на вихід через іншу звукову карту. Або в моєму випадку я також хотів вивести через ту саму звукову карту, але HDMI замість колонок / навушників. Pulseaudio робить це, але як? Приклади від початку до кінця потрібні, щоб зробити це гарною відповіддю.
Колін Кінан

1
Пітті це було обрано як відповідь - питання саме те , що я шукаю: як тимчасово змінити карту, що використовується для виведення. Однак, як @oneself вже зазначав, ця відповідь насправді не пояснює, як це зробити. Задавши нове запитання з майже такою ж назвою, зараз, ймовірно, закриють як дублікат.
domsson

1
@domsson просто поверніться до цього і поясніть, що відповідь не вирішила вашу проблему. Це повинно переконатися, що він не закритий як дуп.
тердон

0

IIUC ви можете оновлювати .asoundrcабо /etc/asound.confдинамічно. Так воно і повинно бути можливо мати два файли headphones.confі front.confякі встановлюють свої пристрої за замовчуванням в відповідні hw:channel,deviceчисла , а потім перемикатися між ними на «Гніздо ACPI / навушників роз'єм навушників» подія. Я збираюся спробувати це, використовуючи "ln" для посилання /etc/asound.confна один із/etc/sounds/{headphones,front}.conf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.