html5 doctype необходим для функционирования видео тега? - PullRequest
3 голосов
/ 02 июля 2010

только из-за того, что используется тег видео, вся страница должна быть HTML5 ??

я так не думал ... как ты думаешь?

Я понимаю, что тег видео (<video>) не является строгим HTML5 (отчасти потому, что строгий еще не существует), а также HTML5 не используется или не нужен для реализации тега видео - этот тег может функционировать в HTML4 / обычном старом HTML и phtml документы ... я не прав?

Ответы [ 5 ]

3 голосов
/ 02 июля 2010

Согласно спецификации W3C, да, тег <video> доступен только в HTML5.Однако, как и во всем остальном в HTML, я уверен, что большинство браузеров позволят вам использовать тег независимо от типа документа.

1 голос
/ 07 июля 2010

Вот пример тега <video>, встроенного в XHTML 1.0 Strict Doctype,

http://www.longtailvideo.com/support/jw-player/jw-player-for-html5/11895/single-mp4-video

0 голосов
/ 08 ноября 2014

Я работал над этой проблемой и нашел способ воспроизвести видео в строгом документе xHtml 1.0 в браузерах HTML5.

Я опубликовал здесь плагин 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. Наконец, я использую метод toDataURL() элемента canvas, чтобы получить закодированное в base64 изображение для кадра и поместитьэто к атрибуту src элемента img.

    img.setAttribute('src', canvas.toDataURL());
    

Делая это, вы заставляете объекты javascript воспроизводить видео из DOM и помещать каждый кадр вimg элемент DOM.Таким образом, вы можете воспроизводить видео, используя возможности браузера HTML5, но без необходимости документа HTML5.

Аспект производительности: поскольку это приводит к очень интенсивному процессу потребления, воспроизведение может мерцать ...Чтобы избежать этого, вы можете снизить качество рендеринга, используя сжатие jpeg следующим образом: canvas.toDataURL('image/jpeg', quality), где quality - это значение от 0 до 1.

0 голосов
/ 11 февраля 2014

Вам не нужен HTML5 DOCTYPE.Код все еще будет работать.

Если видео не работает без него, вы можете вставить его. Возможно, это зависит только от веб-браузера.

0 голосов
/ 09 сентября 2012

Многие браузеры будут воспроизводить его, IE9 не будет без DOCTYPE. Однако вам не нужно использовать HTML5 DOCTYPE - HTML4 тоже подойдет.

(На самом деле, мое тестирование показало, что оно будет работать для любого DOCTYPE, кроме HTML2 / 3 - включая svg doctype, math и некоторые другие ...)

...