gpt4 book ai didi

php - PHP不输出视频的原因可能是什么?

转载 作者:行者123 更新时间:2023-12-04 23:29:15 26 4
gpt4 key购买 nike

我目前正在尝试创建一个 PHP 文件,它可以在其中输出不在 public_html 下的视频。我一直在使用以下 PHP 脚本来输出视频:

<?php

//PHP script to output videos

//Full version of file does a lot of database stuff

//Get $path of file

header('Content-type: video/mp4');
header('Content-Length: '.filesize($path)); // provide file size

$contents = file_get_contents($path);
echo $contents;
//I also tried readfile($path) with the same results

我怀疑这是我的服务器。因此,我尝试直接查看相同的视频文件(www.site.com/video.mp4)。直接做就好了。

最初,这工作得很好。直到最近它才不起作用。我不确定它是否是我安装在服务器上的东西。我记得对 php.ini 和 .htaccess (或其他一些隐藏在其中的设置)进行了一些更改,这让我认为这与此有关。 php.ini 和/或 .htaccess(或任何其他类似于 php.ini 和 .htaccess 的隐藏设置文件)中是否有我需要更改的内容?

现在,我只是在桌面浏览器上测试我的网站。我已经在 Chrome 和 Firefox 上对此进行了测试,它们给了我相同的结果。我尝试过使用 ffmpeg 将我的视频转换为许多不同的视频格式,但结果相同(可以直接播放,不能通过 php 脚本播放)。

当我打开 php 文件时,控制台没有错误。

我的 PHP 脚本没有输出视频内容的原因可能是什么?

最佳答案

这是从 php fread 站点复制的一些代码,正如他所提到的,它具有这些优点

 if ($file = fopen($path, 'rb')) {
while(!feof($file) and (connection_status()==0)) {
print(fread($file, 1024*8));
flush();
}
fclose($file);
}
  • 适用于大文件,每次传输仅使用 8KB 缓冲区。
  • 如果客户端断开连接,则停止传输(与许多脚本不同,它们会继续读取和缓冲整个文件,浪费宝贵的资源)但不会停止脚本
  • 如果传输已完成,则返回 TRUE,如果客户端在完成下载之前断开连接,则返回 FALSE - 您经常需要这个,因此您可以正确记录下载。
  • 发送一些 header ,包括确保它在任何浏览器/代理上最多缓存 2 小时的 header ,以及大多数人似乎忘记的“内容长度”。

  • https://php.net/fread

    关于php - PHP不输出视频的原因可能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25952762/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com