我有一个问题。我想订购(zip)文件以这种方式播放视频以获得连接,以便您可以将其包含在HTML5徽章中。我举了一个例子。但这不起作用。
<?php $video = fopen('zip://video.zip#video.mp4', 'r'); ?>
<video>
<source src='<? echo $video; ?>' type='video/mp4' />
</video>
答案 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文件中读取。