【问题标题】:Reduce FFmpeg CPU Usage with cpulimit and PHP使用 cpulimit 和 PHP 减少 FFmpeg CPU 使用率
【发布时间】:2017-08-24 22:22:27
【问题描述】:

我使用 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 一起使用?

或者有没有其他方法可以限制使用百分比?

【问题讨论】:

  • 您限制此进程的 CPU 使用率的目标是什么?请记住,使用cpulimit 将进程限制为 30% 的 CPU 使用率将使完成时间延长约 3 倍……
  • @duskwuff 使用 1 个 cpu 和 1 个线程的服务器,同时 100% 使用 FFmpeg,它不会减慢网站的其余部分吗?
  • 这就是nice 的用途。如果其他进程正在运行,使用nice 降低进程的优先级将使其“让开”;除非没有其他需要运行,否则它不会使用 100% 的 CPU。
  • @duskwuff 使用 ffmpeg 和 php 运行良好的正确方法是什么?当我执行“nice -19 -- ffmpeg ...”或“nice -19 ffmpeg ...”时,它会给出相同的空白输出。

标签: php ffmpeg


【解决方案1】:

如果启用了安全模式,则程序的执行受到限制。在此处查看此文档,http://php.net/manual/en/function.exec.php

【讨论】:

    【解决方案2】:

    我使用谷歌翻译在这个论坛帖子上找到了答案。

    https://murobbs.muropaketti.com/threads/nice-komento-ja-php-n-exec-funktio-ratkaistu.551174/

    如果使用nicecpulimit,则定义FFmpeg的路径

    nice -19 cpulimit -l 30 /usr/local/bin/ffmpeg -i ...
    

    现在它可以通过 PHP exec() 运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      相关资源
      最近更新 更多