我正在尝试通过php将mp4文件提供给Flash播放器,并在开始播放之前完全下载视频。
$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');
我尝试过类似的卷曲。是什么导致了这种延迟?
答案 0 :(得分:2)
您的Flash播放器很可能希望您处理HTTP Range
请求,以便在播放时更快地启动。
HTML5 / Flash音频播放器jPlayer has a section in their developer guide about this。滚动到有关字节范围请求的部分:
您的服务器必须启用范围请求。这很容易检查 查看服务器的响应是否包含其中的Accept-Ranges 报头中。
另请注意,如果您必须使用PHP而不是直接下载,它们会提供用于处理Range
请求的PHP解决方案。
<强> smartReadFile.php 强>
https://groups.google.com/forum/#!msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ
答案 1 :(得分:0)
另一种选择是让apache自己发送文件,而不是在php中读取它并使用X-Sendfile将其转储到输出中。
首先确保使用sendfile支持编译apache,然后将输出代码更改为:
header ('X-Sendfile: ' . $src);
header ('Content-Type: video/mp4');
header ('Content-Disposition: attachment; filename="' . $filename . '"');
exit;
这通常比通过PHP更快。