我试图通过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');
我试着卷曲了类似的结果。 任何想法是什么造成这种延迟?
最有可能您的Flash播放器,希望你会处理HTTP Range
请求,因此它可以上手的播放速度更快。
在HTML5 /闪存音乐播放器jPlayer在他们的开发指南,了解有关本节 。 滚动至字节范围请求的一部分:
您的服务器必须允许范围请求。 这是很容易被看到,如果你的服务器的响应包括在其头部的Accept-范围检查。
还要注意的是,他们提供了一个PHP的解决方案来处理Range
的要求,如果你必须使用PHP,而不是直接下载的。
smartReadFile.php
https://groups.google.com/forum/#!msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ
另一种选择是只拥有阿帕奇将文件发送它的自我,而不是在PHP读取它,并使用X-SENDFILE转储到输出。
首先确保Apache是用sendfile的支持编译,然后改变你的输出代码为:
header ('X-Sendfile: ' . $src);
header ('Content-Type: video/mp4');
header ('Content-Disposition: attachment; filename="' . $filename . '"');
exit;
这通常是比通过PHP做的更快。