Вставить видео на веб-страницу (HTML)

Я хочу встроить видео на веб-страницу.
Я не хочу использовать Flash, потому что он недоступен для огромного количества платформ.
Я не хочу использовать HTML5, потому что он еще не слишком стандартен (это стандарт , но у большинства людей нет браузеров, которые его поддерживают)

Есть ли другой способ? Или я должен придерживаться HTML5 и ОГРОМНОГО баннера, призывающего людей обновить свой браузер?


person WhyNotHugo    schedule 29.07.2009    source источник
comment
Хьюго, я убрал твое личное мнение о Флэше из твоего вопроса. Вас просто обожгут, и тогда ваш вопрос будет закрыт как субъективный и спорный.   -  person Binary Worrier    schedule 29.07.2009
comment
Смысл был не в том, чтобы критиковать его, а в том, чтобы сказать, что я НЕ ХОЧУ его использовать. :)   -  person WhyNotHugo    schedule 29.07.2009
comment
Я чувствую то же самое, и мне потребовалось несколько лет, чтобы найти решение... Вот оно! Это не самое лучшее решение... Производительность не очень хорошая... Но это работает! (Только что разместил это здесь как ответ)   -  person Charles-Édouard Coste    schedule 09.11.2014


Ответы (6)


Есть несколько способов объединить видео HTML5 с запасными вариантами для неподдерживающих браузеров. Было продемонстрировано несколько конкретных решений.

Одним из примеров является Video for Everyone от Camen Design, который соответствует HTML5 и использует условные комментарии для IE и тег вложенного объекта для старых браузеров. Это должно быть совместимым со стандартами, обратно совместимым и перспективным.

person Michael Zajac    schedule 31.12.2009
comment
ВАУ! Это полностью правила, люблю это! - person WhyNotHugo; 01.01.2010

HTML 5 не является стандартным. Это черновик. Вероятно, однажды это станет стандартом. Вероятно, он изменится в первую очередь.

Если вы хотите встроить видео на страницу, то, по крайней мере, на сегодняшний день, Flash — лучший поддерживаемый вариант, который у вас есть. Я бы предоставил ссылку на обычную загружаемую версию в качестве опции для людей, у которых нет Flash (или которые просто хотят посмотреть видео в специальном видеоплеере).

Если вы скажете людям обновить свой браузер, это не сильно поможет. Насколько мне известно, единственным браузером с поддержкой видео в стабильной версии является Firefox. Chrome не поддерживает его, кроме как в версии для разработчиков. Я не думаю, что Opera выпустила стабильную сборку с поддержкой. Microsoft, конечно, еще не добавила его в Internet Explorer. Сафари, насчет которого я не уверен.

Если вы действительно хотите избежать Flash, вы можете использовать объект HTML 4.01.

<object data="myVideo.ogv" type="video/ogg">
  <!-- fallback content here -->
</object>

и надеюсь, что у пользователя есть подключаемый модуль, способный обрабатывать установленное видео.

person Quentin    schedule 29.07.2009
comment
Я никогда не сталкивался с этим. Что воспроизводит видео в этом теге? Есть ли в браузерах мэров подключаемый модуль, который делает эту работу, или это дело 5% людей? - person WhyNotHugo; 29.07.2009
comment
Это стандартный HTML 4.01. Независимо от того, какой подключаемый модуль регистрируется для обработки видео/ogg (в этом примере), данные обрабатывают его. Установка VLC дала мне необходимую для этого поддержку (и Firefox предложил мне найти плагин, когда он не был установлен). Я никогда не исследовал базу установки подходящих плагинов, поэтому я не знаю, каков уровень поддержки в дикой природе. - person Quentin; 29.07.2009
comment
Прохладный. Это неплохой запасной вариант для тега ‹video› (или наоборот). - person WhyNotHugo; 30.07.2009
comment
@Wahnfrieden Привет! Добро пожаловать в 2009 год. Все может немного отличаться от того, к чему вы привыкли. w3.org/TR/html5/video.html#video - person Quentin; 06.08.2009
comment
@ Дэвид Дорвард, не надо сарказма. Я ошибаюсь - тег ‹video› оставлен, но используемый кодек больше не указывается и будет зависеть от реализации. Я думал, когда сбросили Ogg Theora, тег тоже убрали. Но он по-прежнему не дает явного преимущества перед ‹object›, поскольку вам все еще нужно надеяться, что клиент использует браузер, поддерживающий ваш кодек. - person aehlke; 07.08.2009
comment
У него есть явное преимущество перед ‹object› — согласованный API и средство для проверки поддержки видеоформата. Кодеки в любом случае почти наверняка быстро стандартизируются. - person Quentin; 08.08.2009
comment
@David два года спустя, а битва все еще бушует. Я бы хотел, чтобы ты был прав :( - person Matthew Scharley; 12.05.2011

Я только что наткнулся на Кортадо. Это Java-апплет, который воспроизводит OGG. На самом деле я должен поблагодарить Дэвида Дорварда за это, так как проверка статуса HTML5 натолкнула меня на это. Firefox предлагает использовать что-то вроде:

 <video src="my_ogg_video.ogg" controls width="320" height="240">  
   <object type="application/x-java-applet"  
           width="320" height="240">  
      <param name="archive" value="cortado.jar">  
      <param name="code" value="com.fluendo.player.Cortado.class">  
      <param name="url" value="my_ogg_video.ogg">  
      <p>You need to install Java to play this file.</p>  
   </object>  
 </video>  

Java доступна НАМНОГО БОЛЬШЕ платформ, чем flash, и в данном случае это просто откат к HTML5.

(источник)

person WhyNotHugo    schedule 29.07.2009

Я знаю, что это немного поздно, но вы смотрели на VLC?

Его можно встроить в веб-сайт, он работает на Windows, Mac OS и Linux, является бесплатным, с открытым исходным кодом, поддерживает множество форматов видео/аудио...

Недостатком является то, что у него нет приятного графического интерфейса с функциями воспроизведения/паузы/установки громкости/..., вам придется создавать их самостоятельно.

Вы можете ознакомиться с этой статьей: http://www.videolan.org/doc/play-howto/en/ch04.html#id310965

person chrisnfoneur    schedule 30.12.2009
comment
Спасибо, я действительно столкнулся с этим на днях. В итоге я использовал HTML5 с запасным вариантом java, но это тоже не очень плохая идея. Единственной проблемой будут клиенты без установленного VLC. - person WhyNotHugo; 01.01.2010

Как вы думаете, почему многие крупные веб-сайты используют Flash для воспроизведения видео? Вероятно, не из-за его недоступности... Конечно, есть альтернативы встраиванию видеоконтента в веб-страницу, но если доступность является проблемой, лучше всего использовать Flash на данный момент.

person Daan    schedule 29.07.2009
comment
Давайте просто предположим, что вспышка не вариант для Хьюго. Что он должен использовать? - person Binary Worrier; 29.07.2009
comment
Даже если не учитываются только 10% людей, я хочу этого избежать. В любом случае у меня есть другие причины ненавидеть вспышку, поэтому я просто не буду ее использовать. - person WhyNotHugo; 29.07.2009
comment
Вероятно, это больше похоже на 0,1% людей. - person Quentin; 29.07.2009
comment
@BW: То, что он должен использовать, зависит от цели / целевых пользователей веб-сайта. Широкая публика: используйте формат, для которого у большинства пользователей есть подключаемый модуль (не знаю, какой именно). Конкретная группа пользователей/компания/техническая среда: используйте формат, доступный в данном контексте. - person Daan; 29.07.2009
comment
Наверное. В этом случае не исключены даже пользователи x86 linux. - person WhyNotHugo; 29.07.2009
comment
Я хочу, чтобы это увидело как можно больше людей. Лично я использую ОС без поддержки флэш-памяти, и там, где скрежет также прекратил разработку, так что никаких шансов. Помимо этого факта, флэш-память обычно нарушает согласованность во многих браузерах. Горячие клавиши браузера непригодны для использования, так как у flash есть фокус; не учитывает настройки специальных возможностей (размер шрифта) и т. д. - person WhyNotHugo; 29.07.2009
comment
@Hugo: все очень верно, и это действительно недостатки Flash, но если Flash может иметь значение между тем, будет ли ваш контент доступен большому количеству людей или нет (при условии, конечно, что это намерение), возможно, стоит с этим смириться. все это. - person Daan; 29.07.2009
comment
Я не думаю, что в настоящее время вы найдете какое-либо решение для работы с видео в браузере, доступное шире, чем Flash. - person aehlke; 06.08.2009

Я работал над этой проблемой, так как меня очень интересует xHtml+RDFa, и я нашел способ воспроизводить видео в строгом документе xHtml 1.0 в браузерах HTML5, не блокируя браузеры не HTML5.

Я опубликовал плагин jQuery здесь: https://github.com/charlycoste/xhtml-video

И демо здесь: http://demo.ccoste.fr/video

На самом деле, это гораздо менее эффективно, чем использование тега HTML5, но, по крайней мере... оно работает!

Решение основано на javascript и холсте, но может быть изящно деградировано с помощью тегов <object> (это то, что делает мой плагин jQuery).

То, что я делаю, на самом деле просто:

  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.

И если в браузере нет возможностей HTML5 или если он не может обрабатывать используемый кодек, он вернется к собственному поведению <object> (в общем... браузер будет искать плагин, такой как VLC, или что-то подобное... )

И если нет возможности воспроизвести видео (нет плагина для него), будет использоваться альтернативный контент, указанный внутри тега <object>.

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

person Charles-Édouard Coste    schedule 08.11.2014