javascript-通过PHP fpassthru()加载的带有mp4 / webm的Chrome HTML5视频:无法设置currentTime?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-通过PHP fpassthru()加载的带有mp4 / webm的Chrome HTML5视频:无法设置currentTime?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1831字,纯文字阅读大概需要3分钟。
内容图文
所以这是我遇到的一个奇怪的问题.我仅在Mac上以及在这些浏览器之间测试过Chrome和Safari,问题仅在Chrome上显示.
我有一个非常基本的HTML5视频元素,该元素从服务器加载视频,并且用户在屏幕上有几个按钮可以跳转到视频中的特定时间.
当视频文件被称为直接链接时,例如:
<video id="thevideo" width="720" height="480">
<source type="video/webm" src="videos/vid102.webm" />
<source type="video/mp4" src="videos/vid102.mp4" />
<p>Your browser does not support this video.</p>
</video>
…效果很好.
但是,我刚刚进行了设置,因此可以通过PHP fpassthru来加载视频,例如:
<video id="thevideo" width="720" height="480">
<source type="video/webm" src="getvideo.php?t=webm&v=166" />
<source type="video/mp4" src="getvideo.php?t=mp4&v=166" />
<p>Your browser does not support this video.</p>
</video>
getvideo.php看起来像这样:
<?php
$videoID = $_REQUEST["v"];
$videoType = $_REQUEST["t"];
$vidPath = "videos/video$vidFile.$videoType";
$fp = fopen($vidPath, 'rb');
header("Content-Type: video/$videoType");
header("Content-Length: " . filesize($vidPath));
fpassthru($fp);
?>
奇怪的行为是这样的:在两种浏览器上,视频都可以正常加载和播放.但是,在Chrome上,使用fpassthru PHP脚本的版本破坏了设置播放器的“ currentTime”属性的能力,从而跳至视频中的某个位置.如果我调用document.getElementById(‘thevideo’).currentTime = 50,而不是跳到50秒标记,它将停留在原处.
知道为什么会这样吗?
更新:
我已经看到一些迹象表明,这与Chrome有关,特别是要求在响应中提供“ Accept-Ranges”标头.我已经在.php脚本的输出中添加了标头“ Accept-Ranges:bytes”,并确保Web服务器允许字节范围请求,但仍无法正常工作.
解决方法:
您正确地要求将“ Accept-Ranges”标头作为HTTP Byte Serving的一部分.我建议阅读以下类似问题的答案:
添加响应标头是不够的.您还必须使用“ 206部分内容”状态代码进行响应,并仅返回请求的字节范围.听起来您仍在返回整个文件. fpassthru将从头到尾读回文件,因此您似乎需要寻找另一种读取文件的方式.
内容总结
以上是互联网集市为您收集整理的javascript-通过PHP fpassthru()加载的带有mp4 / webm的Chrome HTML5视频:无法设置currentTime?全部内容,希望文章能够帮你解决javascript-通过PHP fpassthru()加载的带有mp4 / webm的Chrome HTML5视频:无法设置currentTime?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。