对大文件使用shell_exec超时进行FFMPEG转换

时间:2017-04-06 11:10:07

标签: php ffmpeg shell-exec

我尝试使用ffmpeg和php将大型(40mb)mov文件转换为mp4。

但它在服务器上给出了504超时错误。我可以在不更改set_time_limit的情况下修复此问题吗?

这是我的PHP代码。

shell_exec($this->getFFmpegPath() . ' -i ' . $path . ' -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -preset slower -crf 18 -vf "scale=trunc(in_w/2)*2:trunc(in_h/2)*2" ' . $convertedPath . '.mp4');

那么,关于如何在没有超时的情况下转换它的任何想法?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可能希望在后台运行转换。我发现like this可以解决这个问题,但请对该主题进行更多调查。然后,您可以允许用户刷新以查看该过程是否已完成。

它也可以提供更好的用户体验(然后更好地查看页面加载很长一段时间。连接中有很多地方可能会认为它是超时:php引擎,web服务器,代理,浏览器,取决于下文。

此外,您应该非常小心shell_exec。网上有人滥用它对你的机器做任何他们想做的事的可能性非常高。也许不是你今天使用它的方式(取决于$path$convertedPath来自哪里),但也许在将来允许用户指定结果文件名的代码更新中