【问题标题】:Play html5 video with buffering on apache with php使用 php 在 apache 上播放带有缓冲的 html5 视频
【发布时间】:2014-04-08 14:03:58
【问题描述】:

我有一个简单的 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 进行测试

任何建议都会很有帮助。

【问题讨论】:

    标签: php html apache video buffering


    【解决方案1】:

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

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

    如果上述方法有效,则问题可能是您的 mp4 格式不正确。您可以尝试使用handbrakeMP4Box 重新打包您的文件。您需要使用手刹激活“网络优化”选项(又名快速启动)。

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

    有关此here 的更多信息。

    【讨论】:

    • 谢谢。我应该如何检查服务器是否可以播放格式正确的“快速启动”视频?
    • 下载 vjs.zencdn.net/v/oceans.mp4 并将其托管在您的服务器上。尝试播放它,看看它是否立即开始。
    • 是的,实际上示例是有效的,所以问题出在视频上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2016-01-28
    • 2014-02-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多