从rar或zip文件播放mp4文件

时间:2013-09-10 05:16:16

标签: php

我有一个问题。我想订购(zip)文件以这种方式播放视频以获得连接,以便您可以将其包含在HTML5徽章中。我举了一个例子。但这不起作用。

<?php $video = fopen('zip://video.zip#video.mp4', 'r'); ?>
<video>
    <source src='<? echo $video; ?>' type='video/mp4' /> 
</video>

1 个答案:

答案 0 :(得分:1)

上面代码中的

$video只是一个服务器端文件句柄,可以用来从zip中读取文件。它不能直接用于浏览器。

您需要处理读取文件并将其返回到单独的HTTP请求中。通常你会使用第二个脚本。 (或者,如果您的视频相对较小,您可能可以使用数据网址,但这不是我尝试做的事情。)此外,如果您想要允许字节范围请求,您必须自己处理在你的视频服务逻辑中。

这是一个相当简单的场景:

我的videos.zip文件包含几个不同的视频,我想检索一个特定的视频并在名为video.php的页面上显示

首先我有我的观看者,说video.php,[编辑:包含视频标记,并将第二个脚本的URL作为源。由于我可能希望在某个时刻提供其他文件,我将其设置为接受v查询参数中的文件名。]

..some html/php..
<video>
   <source src='zipserve.php?v=itsrainintoast.mp4' type='video/mp4' /> 
</video>
..more html/php..

然后,在zipserve.php我有这样的事情:

$filename = $_GET['v']; //You probably want to check that this exists first, btw.
$fp = fopen('zip://videos.zip#'.$filename, 'r');
if($fp)
{
   header('content-type: video/mp4');
   //Note: you should probably also output an appropriate content-length header.
   while(!feof($fp))
   {
      echo fread($fp, 8196);
   }
   fclose($fp);
}
else
{
   echo 'Some error message here.';
}

- Addendum-- 还应该注意,这将需要启用zip php扩展。

有关范围处理等的视频提取脚本的更完整示例可以在mp4 from PHP - Not playing in HTML5 Video tag的问题中找到,但您需要对其进行调整以允许从zip文件中读取。