播放前,打开通过PHP结果MP4的完整下载(opening mp4 via php results

2019-10-17 07:12发布

我试图通过PHP养活的MP4文件到Flash Player和视频开始播放前完全下载。

$src = '/var/www/user/data/www/domain.com/video.mp4';
if(file_exists($src) and is_readable($src)) {
    header('Content-Type: video/mp4');
    header('Content-Length: '.filesize($src));
    readfile($src);
} else die('error');

我试着卷曲了类似的结果。 任何想法是什么造成这种延迟?

Answer 1:

最有可能您的Flash播放器,希望你会处理HTTP Range请求,因此它可以上手的播放速度更快。

在HTML5 /闪存音乐播放器jPlayer在他们的开发指南,了解有关本节 。 滚动至字节范围请求的一部分:

您的服务器必须允许范围请求。 这是很容易被看到,如果你的服务器的响应包括在其头部的Accept-范围检查。

还要注意的是,他们提供了一个PHP的解决方案来处理Range的要求,如果你必须使用PHP,而不是直接下载的。

smartReadFile.php
https://groups.google.com/forum/#!msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ



Answer 2:

另一种选择是只拥有阿帕奇将文件发送它的自我,而不是在PHP读取它,并使用X-SENDFILE转储到输出。

首先确保Apache是​​用sendfile的支持编译,然后改变你的输出代码为:

header ('X-Sendfile: ' . $src);
header ('Content-Type:  video/mp4');
header ('Content-Disposition: attachment; filename="' . $filename . '"');
exit;

这通常是比通过PHP做的更快。



文章来源: opening mp4 via php results in full download before playback