HTML5 doctype是否对视频标签的功能必需?

3

仅仅因为使用了视频标签,整个页面就必须是HTML5吗?

我认为不是这样的...你怎么看?

我的理解是,视频标签(<video>)并不是严格的HTML5(部分原因是严格的HTML5还不存在),也不需要使用或实现HTML5来使用视频标签——该标签可以在HTML4 /常规旧HTML和phtml文档中正常工作...我错了吗?

5个回答

3
根据W3C规范,是的,<video>标签仅在HTML5中可用。然而,就像HTML的其他所有内容一样,我相信大多数浏览器都会让您在DOCTYPE无关的情况下使用该标签。

我明白了...我之前有几个开发人员告诉我必须在HTML5文档中运行标签,我想他们只是误解了这个标签。 - jon

1

是的,看起来你可以用几种方法来实现它...我不确定哪种方法被认为是“最好”的...可能取决于上下文。 - jon

0

我解决了这个问题,并找到了一种在HTML5浏览器上的xHtml 1.0 strict文档中播放视频的方法。

我在这里发布了一个jQuery插件:https://github.com/charlycoste/xhtml-video

还有一个演示在这里:http://demo.ccoste.fr/video

实际上,这比使用HTML5标签要弱大得多,但至少...它可以工作!

解决方案依赖于javascript和canvas,但如果您使用<object>标记,则可以优雅地降级。

我所做的事情实际上很简单:

  1. 我在内存中创建了一个新的视频元素(不是标签),但我没有将其添加到DOM文档中:

    var video = document.createElement('video');
    
  2. 我在内存中创建了一个新的canvas 元素,但我没有将其添加到DOM文档中:

    var canvas = document.createElement('canvas');
    
  3. 我创建了一个新的img 元素将其添加到DOM中。

    // var parent = ... ;
    // var width = ...;
    // var height = ...;
    var img = document.createElement('img');
    
    img.setAttribute('width', width);
    img.setAttribute('height', height);
    
    parent.appendChild(img);
    
  4. 当视频正在播放(video.play())时,我让它在画布上绘制每一帧(因为画布没有添加到DOM中,所以不可见 - 这使得DOM保持有效的xhtml 1.0文档)

    canvas.getContext("2d").drawImage(video, 0, 0, width, height);
    
  5. 最后,我使用canvas元素的toDataURL()方法获取帧的base64编码图像,并将其放置在img元素的src属性中。

    img.setAttribute('src', canvas.toDataURL());
    
通过这种方式,您可以使JavaScript对象在DOM之外播放视频,并将每个帧推送到img DOM元素中。因此,您可以使用浏览器的HTML5功能播放视频,但无需HTML5文档。
性能方面:由于它导致了一个非常高的消耗过程,播放可能会闪烁...为了避免这种情况,您可以通过使用jpeg压缩来降低渲染质量,方法如下:canvas.toDataURL('image/jpeg', quality)其中quality是0到1之间的值。

0

你其实不需要HTML5 DOCTYPE。代码仍然可以工作。

如果视频没有它无法工作,你可以加上它。这可能只取决于Web浏览器。


0
许多浏览器都可以播放它,但没有 DOCTYPE 的情况下 IE9 将无法播放。然而,您不必使用 HTML5 DOCTYPE - HTML4 也可以。
(事实上,我的测试表明,除了 HTML2/3 之外的任何 DOCTYPE 都可以工作 - 这包括 svg doctype、math 和其他一些...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接