Как запустить mplayer с выводом звука через веб-скрипт PHP на Linux? - PullRequest
1 голос
/ 05 июня 2011

Я вошел в дистрибутив linux feora 15 с именем пользователя: stackoverflow.Мой браузер выполняет в локальной системе скрипт PHP для воспроизведения музыки с использованием системы PHP ("mplayer /tmp/stackoverflow.wav"), passthru ("mplayer /tmp/stackoverflow.wav").Например, команда linux.

Как пользовательский стекопоток, я не слышу никакого звука.Но я вижу, что mplayer /tmp/stackoverflow.wav работает с продолжительностью 8 минут аудио.

Мой вопрос: как я могу использовать систему PHP ("mplayer /tmp/stackoverflow.wav");переключить пользователя и запустить ту же команду, чтобы я мог слушать мою музыку с помощью моего PHP?

<?php
// for example
switchuser("su stackoverflow password");
system("mplayer /tmp/itworks.wav");
?>

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Прямой ответ на ваш вопрос будет использовать sudo, как в

system("sudo -u <username> mplayer /tmp/itworks.wav")

Но я не уверен, что это решит вашу проблему. Во-первых, где вы хотите выводить звук? Сервер или клиент / браузер? Вышеуказанная методика будет работать на сервере. Для браузера вам нужно, чтобы клиент загружал WAV-файл как объект или что-то подобное и работал с ним, предположительно через плагин.

Вы упоминаете, что можете увидеть запущенный процесс mplayer? Если вы находитесь на сервере (или сервер и клиент на одной физической машине), и вы не можете слышать какой-либо вывод, тогда происходит что-то еще. Возможно, что пользователь процесса веб-сервера не имеет разрешения на использование звуковой карты, но я сомневаюсь, что процесс mplayer будет продолжаться так долго, не завершаясь с ошибкой «отказано в разрешении». Чтобы понять это, нам нужно больше информации, я думаю

0 голосов
/ 26 января 2013

Я хотел бы сделать то же самое.Когда я пытаюсь запустить mplayer только через shell_ecex();, он не выбирает pulseaudio для вывода.Даже когда я включаю в команду -ao pulse, это не работает.Когда я пытаюсь запустить команду mplayer с помощью sudo (я добавил www-данные в файл sudoers), mplayer начинает играть (в соответствии с использованием ресурсов), но ничего не выводится.Когда я убиваю экземпляр mplayer вручную, весь вывод звука блокируется, даже когда я запускаю mplayer через консоль.У вас есть какие-нибудь советы для меня, как запустить mplayer через PHP?

Редактировать: у меня есть решение!Моя команда выглядит следующим образом:

shell_exec('sudo -u [username] nohup  mplayer -slave [mplayer attributes go here] 2> /dev/null > /dev/null &'));

Это также останавливает php-скрипт от ожидания результата от mplayer, поэтому он запускает mplayer и продолжает работу.

...