У меня есть Raspberry Pi, который я пытаюсь показать видео с помощью элементов управления в веб-приложении. Я использую omxplayer описанным способом Вот. Мой проблемный файл PHP содержит только эту строку (изменена для тестирования):
exec("/home/pi/master/playmovie.sh test.mp4");
ссылаясь на файл /home/pi/master/playmovie.sh:
omxplayer -o hdmi /home/pi/Videos/$1 < /home/pi/master/cmd > /dev/null &
echo . > /home/pi/master/cmd
Когда я выполняю этот файл php или саму команду локально через putty, все работает нормально, но когда я пытаюсь выполнить его через Интернет, он блокируется, и фильм никогда не запускается.
Важный:
omxplayer -h
, ls -l /home/pi/Videos/test.mp4
, echo -n p > /home/pi/master/cmd
таким образом, это определенно признает все это действительным.Я чувствую, что схожу с ума, и это буквально последнее, что мне нужно сделать в этом проекте, чтобы сделать его работоспособным, помогите !!
Я думаю, это потому, что ваша фактическая команда exec не обрабатывает stdout, stderr и stdin. При вызове из командной строки PHP не имеет выходного буфера, но из браузера он делает.
Звучит так, как будто он получает какой-то вывод, а затем ждет завершения выполнения скрипта и, в конечном итоге, приводит к истечению времени ожидания, следовательно, он ничего не делает.
Что произойдет, если вы используете nohup?
exec("nohup /home/pi/master/playmovie.sh test.mp4 &");
Других решений пока нет …