我有一个简单的html5视频标签,通过PHP指向mp4视频 . 我的问题是 video starts playing only after it has been completely loaded by the browser .
我该如何用php输出视频?我使用了http范围 Headers ,但没有 .
我应该如何配置apache以便可以立即开始播放视频(一旦只下载了一部分)?我应该启用任何模块吗?
HTML代码:
<video width="640" height="264" preload="none" controls="" class="video-js vjs-default-skin" id="approval-playing-video">
<source type="video/mp4" src="dam/index/get-video-preview?id=186&md5=3386d3701e403c69e1c4323168f6ee74"></source>
</video>
Php(ZF2框架)服务器代码:
$response = new Stream();
$response->setStream(fopen($file, 'r'));
$response->setStatusCode(200);
$response->setStreamName(basename($file));
$headers = new Headers();
$headers->addHeaders(array(
'Content-Type' => 'video/mp4',
'Accept-Ranges' => 'bytes',
'Content-Length' => filesize($file)
));
return $response->setHeaders($headers)->setContent($file);
系统测试:使用Firefox 24进行Centos,Apache 2,PHP 5.4测试
任何建议都会非常有用 .
1 回答
首先,您需要确保您的服务器可以正常播放格式为“快速启动”的视频:
您可以在http://vjs.zencdn.net/v/oceans.mp4下载该文件并将其托管在您的服务器上 . 如果它工作正常(即视频在完全下载之前启动),那么您的服务器/脚本配置就可以了 .
如果以上工作的问题可能是您的mp4格式不正确 . 您可以尝试使用handbrake或MP4Box重新打包文件 . 您需要使用手制动器激活"web optimized"选项(也称为快速启动) .
对于MP4Box(linux):
MP4Box -inter 500 yourFile.mp4
关于这个here的更多信息 .