PHP脚本发送视频后返回原始页面
有没有办法在视频播放完毕后跳回原始页面? 我用HTML从链接到视频调用PHPPHP脚本发送视频后返回原始页面,php,html,html5-video,Php,Html,Html5 Video,有没有办法在视频播放完毕后跳回原始页面? 我用HTML从链接到视频调用PHP ... <a href="play.php">My Video ... 。。。 我的视频 ... 并且play.php会发回视频 像这样: <?php $CTYP= 'video/mp4'; $VidPath = "../MyVideo.mp4"; header('Content-Type: ' . $CTYP); $VidFl = fopen($Vid
...
<a href="play.php">My Video
...
。。。
我的视频
...
并且play.php会发回视频
像这样:
<?php
$CTYP= 'video/mp4';
$VidPath = "../MyVideo.mp4";
header('Content-Type: ' . $CTYP);
$VidFl = fopen($VidPath, "rb");
$VidContent = fread($VidFl, filesize($VidPath));
fclose($VidFl);
echo $VidContent;
?>
感谢一个更新,基于我收到的反馈,我更新了php脚本以发送回标签并打开新页面,并在视频结束后使用事件(vid.oned)转到上一页。 因此,对于任何有类似问题的人,这里有更新的代码 index.html
...
<a href="play.php">My Video
...
。。。
我的视频
...
我的play.php文件如下
<?php
$VidPath = "../MyVideo.mp4";
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<link rel="stylesheet" href="video.css" media="screen,print" />'
<title>Test Video play list</title>
<meta charset="utf-8" />
</head>
<body>
<video id="MyVideo" height="auto" width="auto" controls autoplay > <source src=<?php echo $VidPath; ?> type="video/mp4"> </video>
<script>
var vid = document.getElementById("MyVideo");
vid.onended = function() {
history.back();
};
</script>
</body>
</html>
'
测试视频播放列表
最终更新对于任何有类似问题的人来说,它现在是基于建议修改的原始方法的工作版本(可能应该仔细阅读以避免绕过解决方案:)
所以index.html带有标记
。。。。
第101课。。。。
第102讲。。。。
....
和play.php像最初一样将流返回到href链接标签
<?php
include 'dblog.php';
if ( ($_SERVER['REQUEST_METHOD'] === "GET")
&& ( isset($_GET['play_video']) ) ) {
if ($_GET['play_video'] == "101") {
$file_path_name = "../../DVD/Lecture-101.mp4";
} elseif ($_GET['play_video'] == "102") {
$file_path_name = "../../DVD/Lecture-102.mp4";
}
$ctype= 'video/mp4';
header('Content-Type: ' . $ctype);
$handle = fopen($file_path_name, "rb");
$contents = fread($handle, filesize($file_path_name));
fclose($handle);
write_vid_log($_GET['play_video'], $DB, 'start');
echo $contents;
} else {
echo "alert(I'm Sorry wrong link)";
}
?>
不是您这样做的,因为您实际上只是直接显示视频文件。此时浏览器将接管。也许在某些浏览器中,它甚至不会显示,只是下载。相反,您必须显示一个嵌入视频的HTML页面,并使用一些JavaScript检测视频的结尾,然后让浏览器按照建议返回,创建一个HTML页面并使用video
标记。在那里,您可以订阅在播放视频后触发的活动。感谢Markus和ADyson,看起来更好的选择是使用视频标签。虽然在这种情况下,视频已经占据了页面的空间,而且在许多视频的情况下,网页会被填满。我更希望有链接,点击它会在Lightbox中理想地打开,你仍然可以有一个指向页面的链接,然后页面上只有一个视频!或者是的,您可以使用lightbox,然后在视频结束后关闭lightbox。嗨,ADyson,请给我演示在lightbox中打开然后关闭它的示例。如果您想指定站点根目录之外的文件,使视频标记的src=
指向一个PHP脚本,该脚本的功能与问题中的原始“play.PHP”类似,只是它需要一个ID或文件名作为输入(例如src=“getvideo.PHP?file=123.mp4”
),并使用它来决定返回哪个确切的文件内容。如果您让它接受文件名而不是ID,请确保它经过消毒且安全,并且不能用于从您希望允许的位置之外拉取文件。就我个人而言,我会将视频路径的记录存储在数据库中,并让脚本在其中查找。自动播放由用户自行决定。你不能强迫这样做(谢天谢地,考虑到所有这些可怕的视频广告,否则我们会得到)。不同的浏览器以细微不同的方式实现它,但它们都发布了关于它如何工作的信息。在与我的index.html相同的页面中播放视频,看起来像lightbox efect
…这是一个全新的问题。我尝试在索引html中添加\tag,如:
和play.php提供的返回路径,但它不起作用。显示“不支持视频格式”,我计划将所有文件路径放在mysql表中,但我需要先让它直接工作。我在任何情况下实现数据库都是为了检查用户名,看看他们是否能够观看视频。这很好。很高兴你让它工作了。我喜欢你如何将挑战分解为不同的步骤,并在处理下一步之前让小部分工作。这是一个很好的方法,对程序员来说是有效的。我看到太多人将他们的整个应用程序视为一个巨大的模块,不同的部分无法单独测试。因此,你正在以一种良好的方式做事情……祝项目的其余部分好运。如果需要的话,请带着新问题回到这里,关于下一步的问题。
<?php
include 'dblog.php';
if ( ($_SERVER['REQUEST_METHOD'] === "GET")
&& ( isset($_GET['play_video']) ) ) {
if ($_GET['play_video'] == "101") {
$file_path_name = "../../DVD/Lecture-101.mp4";
} elseif ($_GET['play_video'] == "102") {
$file_path_name = "../../DVD/Lecture-102.mp4";
}
$ctype= 'video/mp4';
header('Content-Type: ' . $ctype);
$handle = fopen($file_path_name, "rb");
$contents = fread($handle, filesize($file_path_name));
fclose($handle);
write_vid_log($_GET['play_video'], $DB, 'start');
echo $contents;
} else {
echo "alert(I'm Sorry wrong link)";
}
?>