使用php在apache上播放html5视频

时间:2014-04-08 14:03:58

标签: php html5 apache video buffering

我有一个简单的html5视频标签,通过php指向mp4视频。 我的问题是视频只有在浏览器完全加载后才开始播放

我应该如何使用php输出视频?我使用了http范围标题,但没有。

我应该如何配置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&amp;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);

系统测试: Centos,Apache 2,PHP 5.4 使用Firefox 24进行测试

任何建议都会非常有用。

1 个答案:

答案 0 :(得分:2)

首先,您需要确保您的服务器能够播放格式正确的“快速启动”视频:

您可以在http://vjs.zencdn.net/v/oceans.mp4下载该文件并将其托管在您的服务器上。如果它工作正常(即视频在完全下载之前启动),那么您的服务器/脚本配置就可以了。

如果上述方法有效,则问题可能是您的mp4格式不正确。您可以尝试使用handbrakeMP4Box重新打包文件。您需要使用手制动器激活“web optimized”选项(也称为快速启动)。

对于MP4Box(linux):MP4Box -inter 500 yourFile.mp4

有关此here的更多信息。