为什么 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()
很自然。
我正在尝试使用 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()
很自然。