Как программно изменить объем в 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%, но объем по-прежнему полностью взлетает.
Другим недостатком является то, что я должен указать точное активное устройство вывода, которое, возможно, не знаю, есть ли несколько устройств. Например, если у меня есть "Мастер" и "Наушники", как определить, какой из них является активным устройством?
Ответы
Ответ 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] ~ $