【发布时间】:2018-04-29 20:22:00
【问题描述】:
我正在开发一个 PHP 应用程序,我在我的网站上播放 YouTube 视频。每个视频的 URL、start_time 和 end_time 存储在数据库中,每 30 秒后,我检查数据库中的所有值,如果 current_time 介于任何行的 start_time 和 end_time 之间,如果是,则从该行获取 URL 并开始视频。
$retrieval = "select * from video where user_id=$id AND prog_id=$p";
$result= mysqli_query($db,$retrieval);
if(mysqli_num_rows($result)>0){
while($row = mysqli_fetch_assoc($result)){
$fromTime = strtotime($row['start_time']);
$toTime = strtotime($row['end_time']);
$inputTimeT = strtotime($currTime);
if($inputTimeT >= $fromTime and $inputTimeT <= $toTime){
$url = $row['video_url'];
if(preg_match('/https:\/\/(www\.)*youtube\.com\/.*/',$url)){
// Fetch YouTube VideoID from URL
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
$youtube_id = $match[1];
?>
<iframe class="mainvideo" src="https://www.youtube.com/embed/<?php echo $youtube_id?>?autoplay=1&loop=1&playlist=<?php echo $youtube_id?>" frameborder="0" allowfullscreen></iframe>
<?php
}
else{?>
<video width="100%" src="<?php echo $row['video_url']?>" controls loop autoplay>
<!--ALTERNATE VIDEOS -->
</video>
<?php }
}
}
}
如果我每分钟刷新一次页面,视频就会从头开始播放(如果时间还没到)。 我想每分钟执行一次此操作,无需重新加载页面,也无需重新加载当前播放的 YouTube 视频(如果时间未到)。如果可能,请提供此问题的可能解决方案。
附:我在存储到数据库时验证了开始和结束时间,所以每个视频都有唯一的开始和结束时间,它们不会重叠。
【问题讨论】:
-
你使用了正确的标签;你试过的代码在哪里?
-
通常你会做的是在一个单独的文件中通过 PHP 从数据库中获取视频的逻辑,然后使用 AJAX 解析和检索原始文件和处理文件之间的数据的PHP。然后,您可以在任何时间加载视频。或者,您可以在 AJAX 中围绕视频构建所有内容。这样您就可以 100% 控制要刷新的内容和不刷新的内容。
标签: javascript php jquery ajax