mp4文件通过php不能播放为html5视频

时间:2011-12-01 21:55:46

标签: php mp4 flowplayer

我正在尝试通过PHP输出mp4视频文件。 当它通过flash播放器(例如流程播放器)使用时,它工作得很好。 但是当我试图将它用作html5视频标签上的源或直接调用php文件时,它不起作用。

我使用的代码如下:

        $filesize = filesize($file);
        header("Content-Type: video/mp4");

        if ( empty($_SERVER['HTTP_RANGE']) )
        {
            header("Content-Length: $filesize");
            readfile($file);
        }
        else //violes rfc2616, which requires ignoring  the header if it's invalid
        {   
            rangeDownload($file);
        }

rangeDownload功能来自http://mobiforge.com/developing/story/content-delivery-mobile-devices附录A.

即使我使用Content-Range标题(Content-Range:bytes 0-31596111/31596112),也会停止下载30.13 MB的视频。

2 个答案:

答案 0 :(得分:1)

最后,我找到了一种方法让它发挥作用

header("Content-Type: $mediatype");

if ( empty($_SERVER['HTTP_RANGE']) )
{
    header("Content-Length: $filesize");

    $fh = fopen($file, "rb") or die("Could not open file: " .$file);

    # output file
    while(!feof($fh))
    {
         # output file without bandwidth limiting
        echo fread($fh, $filesize);
    }
    fclose($fh);
}
else //violes rfc2616, which requires ignoring  the header if it's invalid
{   
     rangeDownload($file);
}

它正在处理php文件和html5视频标签内的直接链接 但是为了在Flowplayer中工作(也许在其他flash / html5播放器中)你需要添加一个mp4扩展名(例如view.php?id = XXX& file = type.mp4)

答案 1 :(得分:0)

这可能与您的浏览器及其用于查看视频文件的插件有关,即快速时间。它适用于Flash的原因是闪存处理缓冲和时间同步等。通常不建议让浏览器处理播放媒体文件,因为它完全取决于浏览器配置和已安装的插件。

有些浏览器会自动下载媒体文件,它完全可由浏览器和最终用户配置。