通过PHP fpassthru()加载了mp4 / webm的Chrome HTML5视频:无法设置currentTime?

所以这是我遇到的一个奇怪的问题。我仅在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服务器允许字节范围请求,但仍无法正常工作。

Brianchirls

关于要求“接受范围”标头作为HTTP字节服务的一部分,您是正确的我建议阅读这个答案以解决类似的问题:

Seekbar在Chrome中不起作用

添加响应标头是不够的。您还必须使用“ 206部分内容”状态代码进行响应,并仅返回请求的字节范围。听起来您仍在返回整个文件。fpassthru将从头到尾读回文件,因此您似乎需要寻找另一种读取文件的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Chrome的HTML5视频代码中通过php播放mp4文件?

来自分类Dev

通过PHP上传视频并编码为服务器上的MP4和/或WebM?

来自分类Dev

HTML5视频元素中mp4之前或之后的webm?

来自分类Dev

设置currentTime后,html5视频等待readystate == 4

来自分类Dev

Chrome如何确定要为HTML5 MP4缓冲多少视频?

来自分类Dev

通过PHP将图像插入MP4视频

来自分类Dev

Chrome无法播放MP4

来自分类Dev

用php流视频/ mp4

来自分类Dev

ffmpeg mp4 通过icecast 服务器直播到webm

来自分类Dev

Vimeo API:通过php API获取自己视频的mp4链接

来自分类Dev

如何将 webm 视频与具有透明度的 mp4 视频合并?

来自分类Dev

使用Javascript下载HTML5 mp4视频

来自分类Dev

从HTML5视频获取MP4创建时间

来自分类Dev

如何使用Java合并.webm(音频)文件和.mp4(视频)文件?

来自分类Dev

是否可以将 mp4 视频数据转换为 webm?

来自分类Dev

MP4 html5视频无法在IE10上运行

来自分类Dev

当无法解码mp4时,firefox为什么无法播放webm?

来自分类Dev

通过预加载更改html5视频源

来自分类Dev

通过命令行批量/批处理将mp4和m4v文件转换为webm?

来自分类Dev

通过命令行批量/批处理将mp4和m4v文件转换为webm?

来自分类Dev

强制使用.webm而不是.mp4

来自分类Dev

安装QuickTime后,Chrome无法播放mp4

来自分类Dev

HTML5视频背景无法加载

来自分类Dev

ffmpeg mp4视频无法在浏览器的html5视频播放器上播放(格式错误)

来自分类Dev

如何使用ffmpeg将WebM音频(Opus)和MP4视频(H.264)合并为一个MP4文件

来自分类Dev

如何使用ffmpeg php对mp4视频加水印

来自分类Dev

使用Red5通过ffmpeg和rtmp流mp4视频

来自分类Dev

在Jwplayer上完全加载之前无法播放MP4

来自分类Dev

MP4在Jwplayer上完全加载之前无法播放

Related 相关文章

  1. 1

    在Chrome的HTML5视频代码中通过php播放mp4文件?

  2. 2

    通过PHP上传视频并编码为服务器上的MP4和/或WebM?

  3. 3

    HTML5视频元素中mp4之前或之后的webm?

  4. 4

    设置currentTime后,html5视频等待readystate == 4

  5. 5

    Chrome如何确定要为HTML5 MP4缓冲多少视频?

  6. 6

    通过PHP将图像插入MP4视频

  7. 7

    Chrome无法播放MP4

  8. 8

    用php流视频/ mp4

  9. 9

    ffmpeg mp4 通过icecast 服务器直播到webm

  10. 10

    Vimeo API:通过php API获取自己视频的mp4链接

  11. 11

    如何将 webm 视频与具有透明度的 mp4 视频合并?

  12. 12

    使用Javascript下载HTML5 mp4视频

  13. 13

    从HTML5视频获取MP4创建时间

  14. 14

    如何使用Java合并.webm(音频)文件和.mp4(视频)文件?

  15. 15

    是否可以将 mp4 视频数据转换为 webm?

  16. 16

    MP4 html5视频无法在IE10上运行

  17. 17

    当无法解码mp4时,firefox为什么无法播放webm?

  18. 18

    通过预加载更改html5视频源

  19. 19

    通过命令行批量/批处理将mp4和m4v文件转换为webm?

  20. 20

    通过命令行批量/批处理将mp4和m4v文件转换为webm?

  21. 21

    强制使用.webm而不是.mp4

  22. 22

    安装QuickTime后,Chrome无法播放mp4

  23. 23

    HTML5视频背景无法加载

  24. 24

    ffmpeg mp4视频无法在浏览器的html5视频播放器上播放(格式错误)

  25. 25

    如何使用ffmpeg将WebM音频(Opus)和MP4视频(H.264)合并为一个MP4文件

  26. 26

    如何使用ffmpeg php对mp4视频加水印

  27. 27

    使用Red5通过ffmpeg和rtmp流mp4视频

  28. 28

    在Jwplayer上完全加载之前无法播放MP4

  29. 29

    MP4在Jwplayer上完全加载之前无法播放

热门标签

归档