为什么 ffmpeg 会创建额外的文件?

Why is ffmpeg creating extra files?

我正在尝试使用 ffmpeg 转换来自 url 的文件,大多数时候,我得到的正是我要找的东西:

$video = "tmpVideos/".$img->image_id.$randNum.".mov";
$largeURL = uniqid();
$command = "ffmpeg -i $video -filter:v scale=720:-2:force_original_aspect_ratio=decrease -c:v libx264 -x264-params crf=23 -an large/$largeURL.mp4";
shell_exec($command);

但是当输入文件大于大约 2GB 时,奇怪的事情开始发生。大多数时候,它只是生成额外的文件。将创建我要求的文件,然后再创建几个(有时 1 个,有时 3 个),分辨率相同,但文件大小稍大(约 20%)。

为什么会这样?创建我想要的文件时,有什么办法可以杀死 ffmpeg 吗?

经过反复试验,我确实解决了这个问题。

我有两个问题。一个是上面列出的,另一个是我正在下载的 2-4GB 文件将下载 1-4 次,然后每个文件将再使用 ffmpeg 处理 1-4 次,所以我消耗了大量的处理能力和带宽.

事实证明,整个脚本在到达 die() 或 exit() 之前只是简单地重复自身;当它超时时,php 将停止执行(或从头开始?),但下载或进程将继续进行。

我仍然不知道为什么它在超时后会重复自己,但是添加 ini_set('max_execution_time', '1000');(1000 或其他一些大数字)就可以了。脚本有足够的时间执行,die() 很自然。