Установить громкость используя php exec и amixer
Я написал небольшой скрипт php для управления громкостью моей локальной машины с помощью alsa:
<?php # for simplicity and testing it really just executes the command: echo exec('amixer set Master 5%+') . " \n";
Теперь, когда я запускаю этот скрипт в командной строке, он работает нормально:
$ php volume.php Front Right: Playback 39226 [60%] [on] $ php volume.php Front Right: Playback 42503 [65%] [on] $ php volume.php Front Right: Playback 45780 [70%] [on]
У меня играет музыка, и я слышу, как она становится громче.
Но когда я пытаюсь запустить скрипт через apache из браузера, http://localhost/volume.php
он не работает.
# http://localhost/volume.php Front Right: Playback 55709 [10%] [on] # F5 Front Right: Playback 55709 [15%] [on] # F5 Front Right: Playback 55709 [20%] [on]
Теперь я не слышу никаких изменений в объеме, и проценты, кажется, не связаны с текущим состоянием. Это говорит 10% - 15% - 20%, когда это действительно все еще на 70%.
Мой apache работает как мой пользователь, поэтому exec('whoami')
дает мне имя пользователя, с которым я вошел в свою оболочку, где все работает нормально.
# httpd.conf User mkt Group mkt
Я на Fedora 22.
Вероятно, это связано с процессной средой apache2. Любые идеи, как это исправить?
ОБНОВЛЕНИЕ :
Это вывод aplay -L:
[mkt@localhost ~]$ aplay -L null Discard all samples (playback) or generate zero samples (capture) pulse PulseAudio Sound Server default Default ALSA Output (currently PulseAudio Sound Server) sysdefault:CARD=Intel HDA Intel, ALC888 Analog Default Audio Device front:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog Front speakers surround21:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 4.0 Surround output to Front and Rear speakers surround41:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Intel,DEV=0 HDA Intel, ALC888 Analog 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=Intel,DEV=0 HDA Intel, ALC888 Digital IEC958 (S/PDIF) Digital Audio Output hdmi:CARD=NVidia,DEV=0 HDA NVidia, HDMI 0 HDMI Audio Output hdmi:CARD=NVidia,DEV=1 HDA NVidia, HDMI 1 HDMI Audio Output hdmi:CARD=NVidia,DEV=2 HDA NVidia, HDMI 2 HDMI Audio Output hdmi:CARD=NVidia,DEV=3 HDA NVidia, HDMI 3 HDMI Audio Output
В командной строке работают только default и pulse:
amixer -D pulse set Master 5%+ amixer -D default set Master 5%+
С PHP даже эти два не работают. Во всяком случае ... мой звук исходит из динамиков моих мониторов, который подключен через HDMI. Я думаю, последние 4 устройства - мои кандидаты. Но ни один из них не работает.
$ amixer -D hdmi:CARD=NVidia,DEV=0 set Master 5%+ $ amixer -D hdmi:CARD=NVidia,DEV=1 set Master 5%+ $ amixer -D hdmi:CARD=NVidia,DEV=2 set Master 5%+ $ amixer -D hdmi:CARD=NVidia,DEV=3 set Master 5%+
Во всех четырех случаях это говорит: (с DEV = [0-3] конечно)
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL hdmi:CARD=NVidia,DEV=3 amixer: Mixer attach hdmi:CARD=NVidia,DEV=3 error: No such file or directory
ОБНОВИТЬ
Вывод aplay -l:
$ aplay -l **** Liste der Hardware-Geräte (PLAYBACK) **** Card 0: Intel [HDA Intel], Device 0: ALC888 Analog [ALC888 Analog] Sub-Devices: 1/1 Sub-Device #0: subdevice #0 Card 0: Intel [HDA Intel], Device 1: ALC888 Digital [ALC888 Digital] Sub-Devices: 1/1 Sub-Device #0: subdevice #0 Card 1: NVidia [HDA NVidia], Device 3: HDMI 0 [HDMI 0] Sub-Devices: 1/1 Sub-Device #0: subdevice #0 Card 1: NVidia [HDA NVidia], Device 7: HDMI 1 [HDMI 1] Sub-Devices: 0/1 Sub-Device #0: subdevice #0 Card 1: NVidia [HDA NVidia], Device 8: HDMI 2 [HDMI 2] Sub-Devices: 1/1 Sub-Device #0: subdevice #0 Card 1: NVidia [HDA NVidia], Device 9: HDMI 3 [HDMI 3] Sub-Devices: 1/1 Sub-Device #0: subdevice #0 $ amixer -c0 set Master 5%+ $ amixer -c1 set Master 5%+
Оба не работают!
0 ответов на вопрос
Похожие вопросы
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
1
Обратный прокси Apache
-
3
Ubuntu Server с рабочим окружением GNOME - настройка разрешений файла конфигурации Apatche
-
-
8
Как я могу дать права на запись в папку всем пользователям Linux?
-
5
Есть ли * хороший * HTML-режим для emacs?
-
6
Аудио линейный вход в Ubuntu / Linux Mint
-
4
Есть ли способ увеличить / уменьшить громкость в Linux без использования графического инструмента?
-
1
Журнал ошибок Apache2
-
4
Проверка версии PHP, на которой я работаю в Linux?
-
2
Mac OS X bash: удалите все apache и PHP вхождения