У меня есть php для запуска команды оболочки, чтобы запустить аудио / видео поток через ffmpeg. Я попробовал синтаксис в консоли (тот же пользователь, что и php [www-data] и из того же места, что и php-скрипт:
pi@raspberrypi:/var/www/html/ $ sudo -H -u www-data ffmpeg {parameters}
Это хорошо работает. И аудио, и видео видно на YouTube. Когда я выполняю из PHP с точно такими же параметрами
$pid = exec("ffmpeg {parameters} 2> out.txt");
ответ
cannot open audio device hw:1,0 (No such file or directory)
Моим первым предположением было то, что это было связано с пользователями и группами, но я не могу сказать, что именно. Я даже поместил www-данные в группу sudo. До сих пор не работает.
Если я сделаю
exec("whoami 2> user.txt");
файл user.txt создан (с владельцем www-данных), но остается пустым. Может кто-нибудь мне помочь?
ОБНОВИТЬ
Когда я перезагружаю пи, он работает только один раз. Я думаю, что как-то после закрытия потока
exec("kill -9 ".$pid);
звук все еще занят. Сообщение об ошибке изменяется в
cannot open audio device hw:1,0 (Device or resource busy)
Видео (через uv4l: localhost: port / stream / video.mjpeg) доступно.
Задача ещё не решена.
Других решений пока нет …