我使用PHPexec()在服务器上运行FFmpeg。
它目前在编码时使用100%的cpu线程。
我跟踪了这格德,它使用一个名为库普兰的程序将其减少到30%。
$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 --到exec()脚本,它不再与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可能需要根?
我怎样才能让PHP和exec()与FFmpeg args和cpulimit一起工作?
或者是否有其他方法来限制使用率%?
发布于 2017-03-31 01:24:36
我在这个论坛上找到了答案,用谷歌翻译。
https://murobbs.muropaketti.com/threads/nice-komento-ja-php-n-exec-funktio-ratkaistu.551174/
如果使用FFmpeg或cpulimit,则定义到cpulimit的路径
nice -19 cpulimit -l 30 /usr/local/bin/ffmpeg -i ...现在,它通过PHP工作。
发布于 2017-03-30 23:54:46
如果启用了safemode,则程序的执行是有限的。查看这里的文档,http://php.net/manual/en/function.exec.php
https://stackoverflow.com/questions/43127243
复制相似问题