amixer - Как изменить канал записи?

О Вашем вопросе о производительности каналы более эффективны, чем файлы, потому что никакой диск IO не необходим. Так cmd1 | cmd2 более эффективно, чем cmd1 > tmpfile; cmd2 < tmpfile (это не могло бы быть верно если tmpfile поддерживается на псевдодиске или другом запоминающем устройстве как именованный канал; но если это - именованный канал, cmd1 должен быть выполнен в фоновом режиме, поскольку его вывод может заблокироваться, если канал становится полным). Если Вам нужен результат cmd1 и все еще потребность отправить ее вывод в cmd2, Вы должны cmd1 | tee tmpfile | cmd2 который позволит cmd1 и cmd2 работать в параллельных операциях чтения с диска предотвращения от cmd2.

Именованные каналы полезны если много чтения-записей процессов для того же канала. Они могут также быть полезными, когда программа не разработана для использования stdin/stdout для его IO, бывшего должного использовать файлы. Я поместил файлы в курсив, потому что именованные каналы не являются точно файлами в точке зрения устройства хранения данных, поскольку они находятся в памяти и имеют фиксированный размер буфера, даже если у них есть запись файловой системы (для ссылочной цели). Другие вещи в UNIX имеют записи файловой системы, не будучи файлами: просто думайте /dev/null или записи других в /dev или /proc.

Поскольку каналы (названный и без имени) имеют фиксированный размер буфера, операции чтения-записи им могут заблокироваться, заставив чтение/запись войти в состояние IOWait. Кроме того, когда Вы получаете EOF при чтении из буфера памяти? Правила об этом поведении четко определены и могут быть найдены в человеке.

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

О нас "everything in Linux/Unix is a file", Я не соглашаюсь. Именованные каналы имеют записи файловой системы, но не являются точно файлом. Каналы без имени не имеют записей файловой системы (кроме, возможно, в /proc). Однако большинство операций IO на UNIX сделано с помощью функции чтения-записи, которым нужен дескриптор файла, включая канал без имени (и сокет). Я не думаю, что мы можем сказать это "everything in Linux/Unix is a file", но мы можем, конечно, сказать это "most IO in Linux/Unix is done using a file descriptor".

5
29.09.2011, 14:55
3 ответа

Я нашел решение здесь:

там я нашел:

$ amixer -c0 cset iface=MIXER,name='Input Source',index=1 'Front Mic' # (Record from Front Mic)

немного измененный согласно моей звуковой карте и установке (звуковая карта по умолчанию, другое упорядочивание объектов):

$ amixer cset name='Input Source',index=0 'Rear Mic'
7
27.01.2020, 20:36

Можно использовать sset параметр. От man amixer:

   set or sset <SCONTROL> <PARAMETER> ...
          Sets the simple mixer control contents. The parameter can be the volume either as a percentage  from  0%  to  100%
          with  % suffix, a dB gain with dB suffix (like -12.5dB), or an exact hardware value.  The dB gain can be used only
          for the mixer elements with available dB information.  When plus(+) or minus(-) letter is  appended  after  volume
          value, the volume is incremented or decremented from the current value, respectively.

          The  parameters  cap,  nocap, mute, unmute, toggle are used to change capture (recording) and muting for the group
          specified.

          The optional modifiers can be put as extra parameters to specify the stream direction or channels to  apply.   The
          modifiers playback and capture specify the stream, and the modifiers front, rear, center, woofer are used to spec‐
          ify channels to be changed.

          A simple mixer control must be specified. Only one device can be controlled at a time.

В Вашем случае должно быть столь же простым как (НЕ ПРОТЕСТИРОВАННЫЙ)

$ amixer sset 'Input Source',0,'Rear Mic'
1
27.01.2020, 20:36
  • 1
    Это не работает $ amixer sset 'Input Source',0,'Rear Mic' возвраты: Specify what you want to set.... –  Grzegorz Wierzowiecki 30.09.2011, 09:54
  • 2
    небольшая модификация предложенного синтаксиса г-на Shunz работает на меня: $ amixer sset 'Input Source' 'Rear Mic' работы для меня. –  Jack Kelly 19.02.2013, 16:50

У меня есть Система, где у меня есть звуковая карта материнской платы по умолчанию + звуковая карта WebCAM + внешняя карта звука USB = Общие 3 звуковых карты.

Теперь я хочу отключить звук/не отключить звук определенной звуковой карты из 3, в этом случае я могу сделать это использование в соответствии с методом:

покажите мне всю карту в системе

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CA0132 Analog [CA0132 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: U0x11110x2222 [USB Device 0x1111:0x2222], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

таким образом, я хочу использовать карту 2, который является микрометром USB и динамиком

$ amixer -c2
Simple mixer control 'Speaker',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 151
  Mono:
  Front Left: Playback 44 [29%] [-20.13dB] [on]
  Front Right: Playback 44 [29%] [-20.13dB] [on]
Simple mixer control 'Mic',0
  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: Playback 0 - 32 Capture 0 - 16
  Mono: Playback 32 [100%] [47.81dB] [on] Capture 16 [100%] [23.81dB] [on]
Simple mixer control 'Auto Gain Control',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [on]

Теперь, в этой звуковой карте у меня есть 4 панели

1) Динамик 2) Микрометр 3) Микрометр (Получение) 4) Автоматическое усиление

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

Я должен использовать путь, который может отключить звук всего для получения микрофона к 0% и когда требует, откладывает его к 70%, без этого я не сделал имел любой выбор в запасе. Его отказ ALSA, они должны, добавило что-то как pulseaudio pactl

# Now this does MUTE for device 2
$ amixer -c2 sset Mic 0dB
Simple mixer control 'Mic',0
  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: Playback 0 - 32 Capture 0 - 16
  Mono: Playback 0 [0%] [0.00dB] [on] Capture 0 [0%] [0.00dB] [on]

# Unmute for device 2
$ amixer -c2 sset Mic 70dB
Simple mixer control 'Mic',0
  Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: Playback 0 - 32 Capture 0 - 16
  Mono: Playback 32 [100%] [47.81dB] [on] Capture 16 [100%] [23.81dB] [on]
1
27.01.2020, 20:36

Теги

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