HTML5视频,首选编解码器和间接传送

时间:2010-12-25 10:09:30

标签: php cross-browser html5-video

我目前正在尝试构建一个限制访问视频的html5视频页面。因此,我想将视频从网络根目录中删除,并使用某种脚本检查用户帐户并发送视频。

如果我将.ogv(theora)和.mp4(h264)文件放入webroot并使用带有多个源标签的视频标签,它们适用于所有经过测试的浏览器:Firefox(ogg),Chrome(ogg), IE9(mp4),Safari(mp4),Opera(ogg)

<video id="currentVideo" controls width=640>
<source type='video/ogg; codecs="theora, vorbis"' src="http://mysite/1.ogv" />
<source type='video/mp4; codecs="avc1.64001E, mp4a.40.2"' src="http://mysite/2.mp4" />
</video>

现在出现的第一个问题是:为什么chrome使用ogg格式?它通过mp4视频在时间轴上擦除得更快,并且支持mp4视频......有没有办法将格式标记为“首选格式”?

现在,如果我将文件从我的webroot中删除并使用这样的php脚本来提供它们:

的download.php:

$path=explode('/',$_SERVER['PATH_INFO']);
if (sizeof($path)>1) {
        $inf=explode('.',$path[1]);
        $id=intval($inf[0]);
        $type=$inf[1];
        $ctype='';
        if ($type=='ogv') {
                $ctype='video/ogg';
        } elseif ($type=='mp4') {
                $ctype='video/mp4';
        }
        $fname=sprintf('/var/outsidewebroot/videos/test.%s',$type);
        http_send_content_type($ctype);
        http_throttle(0.1);
        http_send_file($fname);
}

应该提供包含对http范围查询的支持的文件。

HTML:

<video id="currentVideo" controls width=640>
<source type='video/ogg; codecs="theora, vorbis"' src="http://mysite/download.php/1.ogv" />
<source type='video/mp4; codecs="avc1.64001E, mp4a.40.2"' src="http://mysite/download.php/2.mp4" />
</video>

Opera无法再确定视频的播放时长,更糟糕的是:谷歌浏览器(及其免费克隆版)挂起(mac和windows) - chrome本身仍在运行,但加载网站的标签已锁定< / p>

1 个答案:

答案 0 :(得分:2)

  

有没有办法将格式标记为“首选格式”?

按优先顺序列出它们。你有ogg首先,所以它被视为首选。

<video id="currentVideo" controls width=640>
<source type='video/mp4; codecs="avc1.64001E, mp4a.40.2"' src="http://mysite/2.mp4" />
<source type='video/ogg; codecs="theora, vorbis"' src="http://mysite/1.ogv" />
</video>