Подтвердить что ты не робот

Как программно изменить объем в Ubuntu

Как вы программно изменяете объем в Gnome на Ubuntu, либо из командной строки, либо из API (предпочтительный Python)?

Единственные ответы, которые я нашел для подобных вопросов, используют amixer, что, похоже, не влияет на Ubuntu 12.04. Продолжительность:

amixer set Headphone 10-

показывает:

Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 115
  Mono:
  Front Left: Playback 0 [57%] [-57.50dB] [on]
  Front Right: Playback 0 [57%] [-57.50dB] [on]

x% изменяется каждый раз, когда я запускаю его. К сожалению, он не влияет на фактический объем. В конце концов, он говорит 0%, но объем по-прежнему полностью взлетает.

Другим недостатком является то, что я должен указать точное активное устройство вывода, которое, возможно, не знаю, есть ли несколько устройств. Например, если у меня есть "Мастер" и "Наушники", как определить, какой из них является активным устройством?

4b9b3361

Ответ 1

Ubuntu использует pulseaudio как sounderver. Его можно контролировать из командной строки с помощью служебных программ pactl и pacmd, например:

pactl set-sink-volume 0 20%

установит объем приемника от 0 до 20%.

см.: man pactl и pacmd help


изменить:

чтобы -xx интерпретироваться как параметр командной строки, вы должны префикс его --. Это останавливает разбор параметров с этой точки:

pactl set-sink-volume 0 -- -20%    # or:
pactl -- set-sink-volume 0 -20%    # doesn't matter where the `--` goes

Ответ 2

Я использую ALSA-микшер. Вероятно, вам нужно загрузить python-alsaaudio

sudo apt-get install python-alsaaudio

Затем для управления громкостью

import alsaaudio
m = alsaaudio.Mixer()   # defined alsaaudio.Mixer to change volume
m.setvolume(50) # set volume
vol = m.getvolume() # get volume float value

Подробнее читайте http://pyalsaaudio.sourceforge.net/libalsaaudio.html, чтобы узнать о библиотеке alsaaudio.

Ответ 3

Команда

amixer работала в Ubuntu 13.04,

Увеличить объем на 5%
amixer -D pulse sset Master 5%+

Уменьшить объем на 5%
amixer -D pulse sset Master 5%-

pactl или pacmd не работает для меня правильно в Ubuntu 13.04.

Ответ 4

Грязный фрагмент для чтения тома (не забывайте, что объем идет "100%" на ubuntu - в этот момент это возвращает ~ 0.66).

#!/usr/bin/python
import subprocess

vol = int(filter(lambda l: l.startswith('set-sink-volume'),
          subprocess.check_output(["pacmd","dump"])
          .split('\n'))[0]
          .split()[-1],16)/100000.

print vol

Ответ 5

Вы также можете попробовать простой и элегантный ponymix. Это позволяет легко увеличить/уменьшить громкость, переключить (отключить звук/включить звук) и т.д.

Сначала получите список доступных источников звука с ponymix

В моем случае я могу видеть как sink 0, так и источник 0. Для управления звуком я могу использовать либо 0, либо полное имя Встроенное аудио цифровое стерео (HDMI).

Увеличьте объем карты 0 на 5%: ponymix -c 0 increase 5

Уменьшите объем карты 0 на 5%: ponymix -c 0 decrease 5

Ответ 6

Я могу порекомендовать этот инструмент, который контролирует pulseaudio: https://github.com/graysky2/pulseaudio-ctl

[email protected] ~ $ pulseaudio-ctl
pulseaudio-ctl v1.63

/usr/bin/pulseaudio-ctl {up,down,mute,mute-input,set,atmost,full-status} [n]

Where up and down adjust volume in ±5 % increments
Where up and down [n] adjust volume in ±n % increments
Where mute toggles the mute status on/off
Where mute-input toggles the input status on/off
Where set set the volume to [n] %
Where atmost only takes effect if current volume is higher than [n]
Where full-status prints volume level, sink and source mute state to stdout

Optionally, redefine an upper threshold in /home/me/.config/pulseaudio-ctl/config

Volume level     : 80 %
Is sink muted    : no
Is source muted  : no
Detected sink    : 1
Detected source  : 3
Pulse version    : 8.0
[email protected] ~ $