Совместимое с браузером решение для встроенного видео - PullRequest
6 голосов
/ 17 августа 2011

Моя компания начинает разыгрывать большое количество онлайновых обучающих / обучающих видео, которые должны отображаться на веб-странице.Нам нужно простое кросс-браузерное решение, которое может вместить большинство пользователей для просмотра в режиме реального времени.

Одно из решений, о котором я читал (не очень простое), - это создание flash, mp4 иavi-версию каждого видео, и пусть плагин javascript определяет, с каким браузером лучше всего работать.

Ответы [ 6 ]

10 голосов
/ 17 августа 2011

Я немного поэкспериментировал с воспроизведением видео во всех браузерах. Лучший способ сделать это - установить тег видео html5 с резервной флэш-памятью. Это на самом деле не требует никакого JavaScript для работы. Этот сайт: http://camendesign.com/code/video_for_everybody дает отличное объяснение того, как это сделать.

Вы захотите настроить что-то похожее на это:

<video width="640" height="360" controls>
    <!-- MP4 must be first for iPad! -->
    <source src="__VIDEO__.MP4" type="video/mp4" /><!-- Safari / iOS video    -->
    <source src="__VIDEO__.OGV" type="video/ogg" /><!-- Firefox / Opera / Chrome10 -->
    <!-- fallback to Flash: -->
    <object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF">
        <!-- Firefox uses the `data` attribute above, IE/Safari uses the param below -->
        <param name="movie" value="__FLASH__.SWF" />
        <param name="flashvars" value="controlbar=over&amp;image=__POSTER__.JPG&amp;file=__VIDEO__.MP4" />
        <!-- fallback image. note the title field below, put the title of the video there -->
        <img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__"
             title="No video playback capabilities, please download the video below" />
    </object>
</video>

Тег видео - это тег html5, который можно использовать для отображения видеофайлов в современных браузерах. Однако вам понадобится несколько разных форматов, чтобы правильно отобразить их в каждом. Например, Firefox принимает только форматы webm и ogg, тогда как Safari принимает только форматы h264 и mp4. Вот отличная статья на эту тему: http://diveintohtml5.ep.io/video.html. Простое программное обеспечение для конвертации, которое вы можете скачать, чтобы конвертировать ваши видео во все эти форматы, можно найти здесь: http://www.mirovideoconverter.com/. Другие браузеры (особенно IE) не принимают HTML5 тег видео, поэтому вместо этого вы должны включить формат flash, к которому он автоматически обратится, если он не знает, что делать с тегом видео.

В конце концов вам придется создать как минимум 3-4 различных формата вашего одного видеофайла, чтобы это работало в браузерах и на разных платформах (iOS для мобильных устройств) из-за отсутствия совместимых стандартов. Также важно убедиться, что ваш сервер использует правильные типы MIME для этих форматов. Это отстой, но пока это единственный способ.

3 голосов
/ 14 сентября 2012

Лучшее решение на данный момент:

http://www.videojs.com/

Как реализовать:

головка:

<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/c/video.js"></script>

корпус:

<div class="vid">
    <video id="vid01" class="video-js vjs-default-skin" controls="controls" preload="none" width="640px" height="264px"
        poster="../../Content/YourInitialPicture.jpg">
        <source src="../../Content/YourVideo.mp4" type='video/mp4'/> <!-- IE / Safari -->
        <source src="../../Content/YourVideo.webm" type='video/webm'/> <!-- Mozilla FF --> 
        <source src="../../Content/YourVideo.ogg" type='video/ogg'/> <!-- Chrome / Opera --> 
        <track kind="captions" src="../../Content/YourVideoCaption.vtt" srclang="en" label="English" />
    </video>
    <script>
        var myPlayer = _V_("vid01");
    </script>
</div>

Скопируйте / вставьте указанный выше код в <body></body> и добавьте путь к своему видео в src="../../"

  • .mp4 (Safari и IE могут воспроизводить этот тип видео)
  • .webm (Mozilla может воспроизводить этот тип видео)
  • .ogg (видео Theora)

вы можете использовать эти бесплатные организаторы для ваших видео.

Все просто!

1 голос
/ 17 августа 2011

Для коммерческого решения проверить http://www.sublimevideo.net/

Бесплатно проверить http://www.videojs.com/

0 голосов
/ 19 июля 2014

Я изучал это довольно давно, и я пытаюсь сделать то же самое, так что, надеюсь, это поможет кому-то еще.Я использовал crossbrowsertesting.com и буквально проверял это почти во всех браузерах, известных человеку.У меня есть настоящее решение, которое работает в Opera, Chrome, Firefox 3.5+, IE8 +, iPhone 3GS, iPhone 4, iPhone 4s, iPhone 5, iPhone 5s, iPad 1+, Android 2.3+, Windows Phone 8.

Динамически изменяемые источники

Динамическое изменение видео очень сложно, и в случае отказа Flash вам придется удалить видео со страницы DOM / и повторно добавить его, чтобы Flashбудет обновляться, потому что Flash не будет распознавать динамические обновления Flash.Если вы собираетесь использовать JavaScript для его динамического изменения, я бы полностью удалил все элементы <source> и просто использовал canPlayType для установки src в JavaScript и break или return после первого поддерживаемого типа видеои не забывайте динамически обновлять flash var mp4.Кроме того, некоторые браузеры не зарегистрируют, что вы изменили источник, если вы не позвоните video.load().Я полагаю, что проблема с .load(), с которой вы столкнулись, может быть исправлена ​​путем первого вызова video.pause().Удаление и добавление видеоэлементов может замедлить работу браузера, поскольку он продолжает буферизовать удаленное видео, но есть обходной путь .

Поддержка кросс-браузерной поддержки

Что касается фактической кросс-браузерной части, я также получил Видео для всех .Я уже попробовал плагин MediaelementJS Wordpress, который, как оказалось, вызвал гораздо больше проблем, чем решил.Я подозреваю, что проблемы были из-за плагина Wordpress, а не из-за библиотеки.Я пытаюсь найти что-то, что работает без JavaScript, если это возможно.На данный момент я пришел к следующему простому HTML:

<video width="300" height="150" controls="controls" poster="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" class="responsive">
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.ogv" type="video/ogg" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.webm" type="video/webm" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone.mp4" type="video/mp4" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone3g.mp4" type="video/mp4" />
<object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="561" height="297">
    <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
    <param name="allowFullScreen" value="true" />
    <param name="wmode" value="transparent" />
    <param name="flashVars" value="config={'playlist':['http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg',{'url':'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4','autoPlay':false}]}" />
    <img alt="No Video" src="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" width="561" height="297" title="No video playback capabilities, please download the video below" />
</object>
<strong>Download video:</strong>  <a href="video.mp4">MP4 format</a> | <a href="video.ogv">Ogg format</a> | <a href="video.webm">WebM format</a>
</video>

Важные примечания :

  • Закончилось помещением ogg в качестве первого<source>, поскольку Mac OS Firefox прекращает попытки воспроизведения видео, если в качестве первого MP4-файла <source>.
  • важны правильные типы MIME. .ogv файлов должно быть * 1039.*, не video/ogv
  • Если у вас есть HD-видео, лучший транскодер, который я нашел для файлов OGG с качеством HD, - Firefogg
  • Файл .iphone.mp4 предназначен для iPhone 4+, который будет только воспроизводить видео в формате MPEG-4 с H.264 Baseline 3 Video и AAC audio.Лучший транскодер, который я нашел для этого формата, это Handbrake, использующий предустановку iPhone и iPod Touch , который будет работать на iPhone 4+, но для работы iPhone 3GS необходимо использовать iPod пресет с гораздо более низким разрешением, который я добавил как video.iphone3g.mp4.
  • . В будущем мы сможем использовать атрибут media в элементах <source> для нацеливания на мобильные устройства медиазапросов, но вернотеперь старые устройства Apple и Android не поддерживают его достаточно хорошо.
0 голосов
/ 05 мая 2014

Что сработало для меня: я загрузил видео на YouTube, затем загрузил его как MP4, и, похоже, он работает во всех браузерах с тегом video.

0 голосов
/ 17 августа 2011

Вы проверяли какие-либо плагины JQuery? Есть много, которые хорошо работают кросс-браузер. Вы можете проверить http://www.no -margin-for-errors.com / projects / prettyphoto-jquery-lightbox-clone /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...