将视频文件加载到HTML中,因为它们是使用PHP动态创建的

时间:2015-09-09 12:54:43

标签: php html5-video

我有一个视频文件夹(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;
        }
}

0 个答案:

没有答案