php - 如何将 PHP 中 Web 根目录外的文件中的视频提供给 html5 视频源
问题描述
我目前index.php
在我的 web 根文件夹中有一个文件,/var/www/html/
它应该在 web 根目录之外的目录中加载图像和视频。
图像和视频文件位于 Web 根文件夹之外,如下所示:
/var/www/media/image.jpg
和
/var/www/media/movie.mp4
.
为了访问图像文件,我在 web 根文件夹中创建了一个 php 文件serve_image.php
,其内容如下:
<?php
header('Content-Type: image/jpg');
readfile("../media/image.jpg");
?>
然后,在 index.php 中,我将此图像加载到一个<img>
元素中,如下所示:
<html>
<body>
<img width="320" height="240" src="serve_image.php"/>
</body>
</html>
并且图像正确显示。
如果我尝试对 mp4 文件做同样的事情,它不会显示视频。我在 web 根文件夹中创建了一个 php 文件,serve_movie.php
其中包含以下内容:
<?php
header('Content-Type: video/mp4');
readfile("../media/movie.mp4");
?>
然后,在 index.php 中,我加载尝试将这部电影加载到<source>
元素内的<video>
元素中,如下所示:
<html>
<body>
<video width="320" height="240" controls autoplay>
<source src="serve_movie.php" type="video/mp4"/>
</video>
</body>
</html>
但是,没有显示视频。
我需要做什么才能正确加载视频?
解决方案
您的代码看起来是正确的,当我刚刚测试了一个非常相似的脚本时,它运行良好。
几个想法:
- 您是否尝试过直接在浏览器中访问您的视频脚本 (serve_movie.php) 以查看是否获得了视频?
- 您是否打开了错误报告并设置为显示错误?如果是这样,你得到了吗?我想知道阅读视频内容是否会由于其大小而耗尽 PHP 的内存限制。
要启用错误报告,请在任何其他代码之前将以下内容添加到您的视频脚本 (serve_movie.php):
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', true);
推荐阅读
- c# - Azure 函数 - 从事件中心触发器向 Azure SignalR 服务发送消息
- gcc - LFS 9.1,步骤 6.9 (glibc-2.31),打破 gcc
- html - 双滚动条问题
- bluesnap - 在 BlueSnap 中为回头客设置 3-D 安全
- reactjs - 使用 React-Leaflet 时如何限制标记的数量?
- javascript - wickedpicker 未显示选定的时间值
- r - 在多元模型中绘制单个协变量回归线
- indexing - Lucene 如何处理重复文档?
- php - PURCHASE WITH PURCHASE 如果他们正在添加来自特定类别的产品,则最低购物车数量
- angular - Ionic / Angular 拦截器发送重复的 HTTP 请求