我使用PHP exec()
在我的服务器上运行FFmpeg。
它目前在编码时使用100%的cpu线程。
我关注this gude使用名为cpulimit的程序将其降低到30%。
PHP
$args = "nice -19 cpulimit -l 30 -- ffmpeg -y -i intput.avi -vcodec libx264 -acodec aac -b:a 192k -threads 1 output.mp4"
exec(escapeshellcmd($args));
FFmpeg / PHP有效,它可以通过终端与nice
/ cpulimit
一起使用,但是在添加之后
nice -19 cpulimit -l 30 --
到PHP脚本它不再适用于exec()
。
输出
FFmpeg输出返回空白。我无法看到完整的输出,我尝试使用:
$output = shell_exec($args);
echo "<p>$output</p>"
和
file_put_contents("/var/www/mysite/logs/$output.log", $line . PHP_EOL, FILE_APPEND);
但他们返回1个空行。
解决方案
我的想法是www-data运行FFmpeg而nice
/ cpulimit
可能需要root?
如何让PHP exec()
使用FFmpeg args和cpulimit?
或者是否有另一种限制使用率的方法?
答案 0 :(得分:0)
如果启用了safemode,则程序的执行受到限制。请在此处查看此文档,http://php.net/manual/en/function.exec.php
答案 1 :(得分:0)
我使用谷歌翻译在这个论坛帖子上找到了答案。
https://murobbs.muropaketti.com/threads/nice-komento-ja-php-n-exec-funktio-ratkaistu.551174/
如果使用nice
或cpulimit
nice -19 cpulimit -l 30 /usr/local/bin/ffmpeg -i ...
现在它可以通过PHP exec()
工作。