php exec не будет выполнять то, что исполняется в консоли в отношении аудио и видео - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть 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: порт / поток / видео.mjpeg) есть в наличии.

...