【发布时间】:2012-07-11 00:27:56
【问题描述】:
我目前正在尝试通过用于控制视频访问的 PHP 脚本提供用于 HTML5 视频(使用 video-js)的 MP4 视频。经过一些研究,我能够在stackoverflow article found here 的帮助下完成这项工作。如果我导航到 PHP 脚本,我可以像在 Firefox、Safari 和 IE 中通过其绝对路径(例如 localhost/myvideo.mp4 而不是 localhost/myscript.php)查看视频一样查看视频。我的问题是谷歌浏览器,它只是显示一个黑色的屏幕,中间有一个小型媒体播放器,什么都不做。
我确实尝试使用路由到 PHP 脚本的 localhost/avideo.mp4 等快速重写,但不幸的是这并没有改变任何东西。
这是我的脚本:
if (is_file($uri)) {
header('Content-Type: video/mp4');
if (isset($_SERVER['HTTP_RANGE'])) {
$this->rangeDownload($uri);
exit;
} else {
header("Content-Length: ".filesize($uri));
$this->readfile_chunked($uri);
exit;
}
} else {
//error
}
rangeDownload 方法直接取自 this link 的附录 A,正如前面提到的 stackoverflow 文章中所建议的那样。
【问题讨论】:
-
您可以发布您发送的所有标题信息吗?
-
内容类型、接受范围、内容范围、内容长度、HTTP/1.1 206 部分内容。这些标头在第一种情况下使用 rangeDownload,它用于 Chrome,尽管 readfile_chunked 使用较少的标头(在 chrome 中仍然不起作用)。
-
我唯一可以建议的另一个是 Content-Transfer-Encoding: binary。我能够通过 PHP 将音频传输到使用此组合的所有浏览器。
-
@ethrbunny 感谢您的帮助,但遗憾的是,该标题没有任何区别。
-
你试过用一个已知的好视频吗?
标签: php html google-chrome video mp4