我正在尝试通过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的视频。
答案 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的原因是闪存处理缓冲和时间同步等。通常不建议让浏览器处理播放媒体文件,因为它完全取决于浏览器配置和已安装的插件。
有些浏览器会自动下载媒体文件,它完全可由浏览器和最终用户配置。