ffmpeg编码在从脚本(php/c#/等)执行时冻结,而不是从命令行执行


ffmpeg encoding freezes when executed from a script (php/c#/etc.) but not from the command line

我尝试过通过PHP脚本使用ffmpeg进行编码,但过程在某个时刻冻结。当同一个命令在Windows中通过命令行运行时,它的编码很好。

我尝试过不同的视频,它们没有被破坏,也没有使用任何异国情调的编解码器或任何东西。

当从脚本(即PHP中的exec())运行而不是直接从命令行运行时,进程冻结的原因是什么?有什么建议吗?

我也遇到过类似的问题。对我来说,我的Web服务器有一个最长的执行时间。

对于IIS(web.config):

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

对于其他服务器谷歌关于

maximum execution time <webservername>

我认为这与管道有关。也就是说,FFmpeg输出重定向到一个管道中,该管道永远不会被另一个进程排出,因此FFmpeg/PHP进程会阻塞。

一些问题:

  • 您正在通过Windows控制台测试命令行;PHP也在Windows环境中运行吗
  • PHP代码转换过程是否显示了任何CPU使用情况?它是耗尽了CPU还是根本没有出现
  • exec()调用到底是什么样子的