コマンドラインまたはAPI(できればPython)から、UbuntuのGnomeのボリュームをプログラムでどのように変更しますか?
同様の質問に対して私が見つけた唯一の回答は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はsounderverとしてpulseaudioを使用しています。これは、コマンドラインから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
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ライブラリの詳細を確認してください。
amixerコマンドはUbuntu 13.04で機能し、
音量を5%上げるamixer -D Pulse sset Master 5%+
音量を5%下げますamixer -D Pulse sset Master 5%-
pactlまたはpacmdは、Ubuntu 13.04では正しく機能しませんでした。
ボリュームを読み取るためのダーティスニペット(ubuntuではボリュームが「100%」を超えていることを忘れないでください。その時点で、これは〜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
Pulseaudioを制御するこのツールをお勧めします: https://github.com/graysky2/pulseaudio-ctl
me@mypc ~ $ 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
me@mypc ~ $
シンプルでエレガントな ponymix utillを試すこともできます。ボリュームの増減、オーディオのトグル(ミュート/ミュート解除)などが非常に簡単になります。
最初にponymix
を使用して利用可能なオーディオソースのリストを取得します
私の場合、sink 0とsource 0。番号またはフルネームのいずれかを使用できます内蔵のオーディオデジタルステレオ(HDMI)、オーディオを制御します。
カード0のボリュームを5%増やします:ponymix -c 0 increase 5
カード0のボリュームを5%減らします:ponymix -c 0 decrease 5