将FFmpeg作为php中的进程运行时出现超时错误
Posted
技术标签:
【中文标题】将FFmpeg作为php中的进程运行时出现超时错误【英文标题】:Timeout error while running FFmpeg as a process in php 【发布时间】:2020-07-08 04:01:31 【问题描述】:我正在尝试在运行时为 FFmpeg 视频压缩创建一个进程。在我的本地系统中,它在 30 秒内运行。当我尝试在服务器中运行它时,它在 60 秒后开始抛出超时错误。当我在服务器中手动运行命令时,大约需要 2 分钟。我知道php.ini
中的一些配置需要修改。我尝试将进程的配置更改为 300 秒。尽管如此,仍在输出相同的超时错误。
The process "/usr/bin/ffmpeg -i '/var/temp/5e7de5a9de7c2/creme bulee-01-infuse
the cream and milk.mp4' -s 1668x2224 -c:a copy '/var/temp/5e7de5a9de7c2/compre
ssed/temp_creme bulee-01-infuse the cream and milk_1668x2224.mp4'" exceeded th
e timeout of 60 seconds.
在php.ini
,我有如下配置:
max_execution_time = 300
max_input_time = 300
如何阻止我的进程超时?
【问题讨论】:
是命令行脚本吗? @Vishal 是的,我正在创建一个命令作为运行时的进程。 php.ini 的当前位置是什么?你用的是linux服务器吗? 是的,它的 Linux 发行版 Ubuntu 和 path=/etc/php/7.2/apache2/php.ini 和 编辑这个 /etc/php/7.2/cli/php.ini 文件 【参考方案1】:我有同样的错误,你需要在 FFMpeg::create 中添加设置并使用 FFMpeg::create
$ffmpeg = FFMpeg::create(
array(
'timeout' => 0, // The timeout for the underlying process
)
);
$ffmpeg->open($video_path);
更多信息在这里https://github.com/PHP-FFMpeg/PHP-FFMpeg
【讨论】:
【参考方案2】:php.ini 中的max_execution_time
指令不影响手册中所述的shell 命令(详见https://www.php.net/manual/en/function.set-time-limit.php)
我的猜测是您使用的是Symfony\Component\Process\Process
,因为默认情况下它的超时时间正好是 60 秒,并且您的错误消息看起来很熟悉。如果我是对的,请try increasing the timeout:
$process = new Process($ffmpeg_cmdline);
$process->setTimeout(3600);
$process->run();
【讨论】:
以上是关于将FFmpeg作为php中的进程运行时出现超时错误的主要内容,如果未能解决你的问题,请参考以下文章
Autodesk Forge - 将文件作为块上传到 Node JS 中的 BIM 360 存储时出现 504 网关超时