Как я могу воспроизвести звук wav на стороне сервера с помощью cgi?

#apache #cgi #server-side #wav

#apache #cgi #на стороне сервера #wav

Вопрос:

Как я могу запустить команду из CGI-скрипта (bash) для воспроизведения звука wav на стороне сервера?

Комментарии:

1. Я хочу, чтобы звук воспроизводился из динамика, подключенного к веб-серверу.

Ответ №1:

Вы можете запустить аудиоплеер командной строки, как описано в nak, но это может не сработать из-за разрешений пользователя, использующего Apache. По умолчанию Apache запускается как www-data:www-data (или apache: apache или www: www в некоторых дистрибутивах). В качестве быстрого исправления / теста вы можете настроить Apache на запуск от имени пользователя, имеющего права доступа к аудиоустройству на компьютере, изменив ваш файл /etc/apache2/apache2.conf (или /etc/httpd/httpd.conf»), чтобы иметь:

  User USER_THAT_CAN_PLAY_AUDIO
 Group USER_THAT_CAN_PLAY_AUDIO 
  

Предупреждение: это небезопасно и не предназначено для постоянного решения!

Ответ №2:

Вот как я бы это сделал

 #!/bin/sh
echo Content-type: text/plain
echo ""
echo "Server is playing sine.wav!"
aplay -q sine.wav
  

Комментарии:

1. Я собираюсь попробовать это, но я попробовал использовать mplayer подобным образом, и он выдал мне ошибку типа «не удалось открыть динамики».

2. Что ж, если это не сработает, тогда может возникнуть другая проблема, которую необходимо решить в первую очередь.

3. оказывается, он не будет воспроизводить звук даже локально.

Ответ №3:

Я наткнулся на этот старый вопрос, пытаясь решить ту же проблему: чтобы мой личный веб-сервер Apache предупреждал меня, когда кто-то делает конкретный запрос (в моем случае вызов чата без необходимости запуска IM).

Приведенное ниже решение — это то, что я использую в Slackware 14.1: в соответствии с вашим дистрибутивом YMMV.

  • запуск visudo

  • добавьте строку TheUserRunningApache ALL=(ALL) NOPASSWD: /usr/bin/play (userrunningapache — это имя пользователя, используемое вашим Apache)

  • На странице PHP, на которой вы хотите воспроизвести звук, добавьте эту строку: system ("sudo /usr/bin/play SOUND.WAV");

Если вы не хотите предоставлять Apache доступ к /usr/bin папке, даже если он ограничен play , вы можете скопировать sox исполняемый файл (программу, которая использовалась для запуска /usr/bin/play ) в другое место, но вам придется соответствующим образом изменить последние две инструкции выше.