我有一个视频文件夹(ex 001.mp4,002.mp4 ...)和他们的海报(ex 001.jpg,002.jpg ...),这些海报由处理用户上传剪辑的脚本填充。当这个php文件访问它时,文件夹将包含所有海报,但是还没有所有剪辑(通常需要<20秒来处理剪辑)。我想做的是在剪辑可用时加载它们(以避免404错误),所以我在下面编写了这段代码。它循环播放海报文件并检查其配对的mp4。如果找不到,它会睡一会儿。理论上似乎很好,但实际上我得到的是页面加载等待所有剪辑可用。是什么赋予了?如果有人对这个问题有更好的解决方法,我会全力以赴。
$folder='sakjhd87HA';
$vidindex = 1;
foreach ($files as $file) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
if ($ext == "jpg") {
$poster = $file;
$clip = basename($file, '.' . $ext) . '.mp4';
$width = shell_exec("ffprobe -loglevel quiet -show_streams $folder/$file | grep width= | grep -v coded | cut -d'=' -f2 | tr -d '\n'");
$height = shell_exec("ffprobe -loglevel quiet -show_streams $folder/$file | grep height= | grep -v coded | cut -d'=' -f2 | tr -d '\n'");
$pad = 70;
$divwidth = $width + $pad . 'px';
$divheight = $height + $pad . 'px';
$clipcpath = $folder . '/' . $clip;
while (!file_exists ($clipcpath)) {
sleep(1);
}
echo "<div style=\"height:$divheight; width:$divwidth; display: block; margin: 0 auto; background-color: #404040;\" ><p>Clip #$vidindex</p><video class=\"clip\" id=\"videos$vidindex\" controls=\"controls\" loop=\"loop\" preload=\"none\" poster=\"$folder/$poster\" width=\"$width\" height=\"$height\"";
if ($vidindex == 1) {
echo " autoplay>\n";
} else {
echo ">\n";
}
echo "<source src=\"$folder/$clip\"/>\n";
echo "</video></div>\n";
$vidindex = $vidindex + 1;
}
}