sonyps4.ru

Открыть html5. Как настроить и где скачать проигрыватель HTML5

ХТМЛ – это язык разметки веб-страниц, по сути он отвечает за правильное отображение всех элементов на странице. Постепенно выпускаются новые спецификации языка, последней является пятая версия, которая принесла упразднение старых и внедрение новых тегов и функций. C HTML5 Yandex браузер стал поддерживать проигрывание видео через собственный Video Player, который не требует установку других плагинов, вроде Adobe Flash Player. Встроенный функционал языка позволяет воспроизвести любой фильм на сайте, поддерживающий HTML5.

При отсутствии HTML5 для браузера Яндекс для воспроизведения видео и части музыки приходилось пользоваться Flash Player. Получалась ситуация, при которой стандартными средствами браузера невозможно было прослушать музыку. Наибольший приток пользователей к Flash был спровоцирован появлением крупнейшего видеохостинга YouTube. Со временем другие крупные компании, например, Apple, стали использовать его для обработки видео.

Прирост пользователей продолжался долгое время, сразу после выхода HTML 4.01 наблюдался большой скачок популярности. Отток произошёл лишь после выпуска новой спецификации HTML5, которая впервые появилась в 2012 году, но полноценный запуск произошёл в 2014 году.

К переходу на HTML5 видео проигрыватель подталкивает несколько основных недостатков плагина от Adobe:

  • Необходимость дополнительно устанавливать в систему. Со временем его добавили в Google Chrome по умолчанию;
  • Низкая скорость работы и частые перебои в загрузке;
  • Плохая стабильность работы, нередко появлялись сбои, конфликты, часто приходилось перезагружать страницу.

Преимущества HTML5 в сравнении с Adobe Flash Player

Технологии по своей сути отличаются, но предназначаются для одних и тех же задач. Для пользователей и разработчиков новый стандарт ХТМЛ5 принёс массу преимуществ:

  • Открытый код. Программист самостоятельно может доработать код. Полезно для повышения безопасности бизнес-ресурсов и приложений;
  • Быстрое развитие. Разработкой занимается продвинутая компания W3C, которая черпает хорошие идеи у пользователей, дорабатывающих стандарт;
  • Совместимость с большинством платформ. Flash Player не поддерживается на Android до 2.01 и 4.1х и более новые варианты, также плагин несовместим с iPhone и iPod. Для работы нового проигрывателя требуется иметь относительно новую версию Yandex browser;
  • Энергоэффективная технология. Видео плеер HTML5 потребляет значительно меньше ресурсов процессора, соответственно, экономит заряд, что важно для любого мобильного телефона.

Что такое HTML5 Video Player для браузера Яндекс?

HTML5 Video Player является программой, предназначенной для конвертирования видеофайлов в формате HTML5. Дополнительно через приложение можно смотреть видео, но такой необходимости не возникает с современными возможностями Яндекс обозревателя. В программу можно загрузить любой файл распространённых видео форматов: mp4, AVI, MKV.

После обработки файла он будет пригоден для загрузки на сервер, функция публикации уже встроена в программу. До заливки на сервер видео можно просмотреть в браузере. Загрузить программу лучше с официального сайта .

Некоторые пользователи жалуются, что приложение не работает, закрываясь сразу после загрузки в неё файла. Устранить проблему помогает переустановка или отключение антивируса. Чтобы не заниматься поиском причин неисправности, лучше воспользоваться аналогичной программой — Free HTML5 Video Player.

Процесс использования обеих приложений аналогичен:


Чтобы вставить ролик на сайт, достаточно скопировать JavaScript код со страницы в браузере, которая открылась после конвертации, и вставить в блок для видео на веб-ресурсе.

Как посмотреть HTML5 Video в Яндекс браузере

На самом деле никаких особых методик для просмотра видео в интернет формате HTML5 не потребуется. Чтобы начать просмотр, достаточно перейти на видео и браузер всё сделает самостоятельно. Воспроизвести видео на YouTube и многих других сервисах не составляет труда, сегодня этот видеохостинг работает исключительно с форматом ХТМЛ5, только для устаревших обозревателей происходит автоматическое переключение на старый Flash Player.

Иногда не получается просмотреть видео в формате HTML5 при наличии ошибок. Технология относится к относительно стабильным способам просмотра визуального контента и звука, но периодические провоцирует ошибки:


Иногда помогает обновление Яндекс обозревателя:


Для рядового пользователя просмотреть видео в HTML не составляет сложности, но важно наличие поддержки формата со стороны сервиса. Известная социальная сеть Facebook не работает с HTML5, но есть способ открыть эту возможность посредством расширения HTML5 Video Player, его можно скачать по ссылке .

ХТМЛ 5 – это общедоступный формат, который поддерживается всеми современными браузерами, его не нужно отдельно устанавливать. С помощью программы HTML5 Video Player для Яндекс браузера можно посмотреть, загрузить видео и преобразовать различные форматы в ХТМЛ5, сделав их доступными для онлайн просмотра.

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

Перейдем теперь к практической части и разберемся, как добавить видео на сайт HTML.

Использование тега VIDEO

Для добавления видео на веб-страницу с помощью HTML используется тег video . Применяется он следующим образом:

Примерно так будет выглядеть видео-плеер (в каждом браузере свой стиль):

Но стоит учесть, что:

  1. Не все браузеры поддерживают тег video ;
  2. Не каждый браузер поддерживает используемый видео кодек.

Если с первым пунктом проблем значительно меньше (большинство современных браузеров, всё-таки, корректно работают с указанным тегом), то на второй пункт стоит обратить пристальное внимание. Поговорим об этом вопросе несколько подробнее.

Поддержка видео кодеков HTML5 в различных браузерах

Для полноты информации стоит привести следующую таблицу:

Браузер Google Chrome Mozilla Firefox Safari Opera Internet Explorer
WebM Есть Есть Нет Есть Нет
H.264 Есть Нет Есть Нет Есть
ogg/theora Есть Есть Нет Есть Нет

Как вы видите, нет универсального формата, который позволил бы воспроизводить видео во всех браузерах. Данная ситуация решается следующим способом: на сервер загружается видеофайл в нескольких форматах, а затем в теге video указываются несколько кодеков. Выглядит это примерно так:

Таким образом, источник видео будет подгружаться автоматически браузером при наличии подходящего кодека.

Атрибуты тега VIDEO

К атрибутам тега video следует отнести:

  • src - путь к видеофайлу;
  • autoplay - принудительное воспроизведение видео по окончании загрузки страницы;
  • controls - отображается панель управления видео (play, pause, volume и т.д.);
  • width/height - устанавливает ширину/высоту видеоплеера;
  • loop - указывает на повторение видео после завершения (циклическое воспроизведение);
  • poster - определяет адрес изображения, которое будет выводиться пока видео не проигрывается или недоступно;

Примечание: наиболее простой способ добавить видео на сайт - использовать сервис YouTube. В конструкторе сайтов "Нубекс" есть подробная статья о добавлении видео из YouTube:

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

Классическим подходом для реализации проигрывателя видео является использование технологии Flash. Пожалуй, сложно найти более распространенный плагин для веб-браузера, чем Flash Player. Однако стоит заметить, что слабым местом подобного подхода является необходимость установки Flash plugin’а. А для многих устройств он вообще отсутствует. К примеру, настолько популярные iPhone и iPad не имеют возможности запускать Flash-приложения в браузере. Выходом из подобной ситуации является использование HTML5.

Данный современный стандарт языка HTML принес множество нововведений. Но ключевым для нас является возможность воспроизведения видео стандартными средствами веб-браузера. Для этого в спецификацию HTML5 введен тэг

  • Autoplay — при наличии данного атрибута со значением ‘autoplay’ воспроизведение начнется сразу после того, как загрузиться достаточны объем видео.
  • Controls – значение данного атрибута, равное ‘controls’ отобразит элементы управления воспроизведением.
  • Height – высота проигрывателя в пикселах.
  • Loop – данный атрибут, установленный в значение ‘loop’ заставит воспроизведение видео циклично повторяться по окончанию.
  • Muted – при значении ‘muted’ отключит звук у видео файла.
  • Poster – данный атрибут принимает url изображения, которое будет отображаться до начала воспроизведения контента.
  • Preload – атрибут определяет стратегию браузера по загрузке видео контента. Может принимать различные значения:
    • Auto’ — если загрузка видео должна начаться при загрузке страницы.
    • Metadata’ – если с загрузкой страницы должны загрузиться лишь метаданные контента.
    • None’ – если при загрузке странице не должна начинаться загрузка видео.
  • Src – данный атрибут содержит url файла с видео контентом.
  • Width — содержит значение высоты проигрывателя.

Подводные камни и первые трудности

К сожалению не все так просто. HTML5 – достаточно молодой стандарт. Так что первое, что стоит отметить — ограниченную поддержку браузерами. Использование тега

  • IE 9+
  • Firefox 4.0+
  • Chrome 6+
  • Safari 5+
  • Opera 10.6+

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

Браузер Форматы
Ogg Theora H.264 VP8 (WebM)
Internet Explorer Требует установки расширения 9.0 Требует установки расширения
Mozilla Firefox 3.5 Нет 4.0
Google Chrome 3.0 Да 6.0
Safari Требует установки расширения 3.1 Требует установки расширения
Opera 10.50 Нет 10.60

Существует механизм для кроссбраузерного воспроизведения. Он заключается в добавлении внутрь

Обратите внимание, что в разных браузерах элементы управления воспроизведением будут выглядеть по-разному. Поэтому для унификации необходимо разрабатывать собственный интерфейс проигрывателя. Идея крайне проста: элементы управления представляют собой div’ы, спозиционированные поверх контейнера с видео.

Стоит заметить, что разные браузеры могут иметь различное поведение при работе с HTML5 video. Например на iOS устройствах невозможен автостарт воспроизведения .

Также отсутствует возможность каким-любо образом управлять размером видео буфера . Определить размер проигрываемого файла также не выйдет, равно как и скорость загрузки.

Начало работы

В стандарте HTML5 у элементов мультимедиа существует мощный API, позволяющий не только разработать единый интерфейс проигрывателя, но и реализовать дополнительный функционал. В качестве инструмента для работы с HTML5 Media API выступает JavaScript.

Допустим на странице существует следующий контейнер с видео:

Для начала работы с проигрывателем через API необходимо определить объект, содержащий контейнер с медиа-содержимым. Для этот используем JQuery селектор:

Var player = $(‘#player’);

Все, теперь мы готовы управлять нашим плеером через JS! Для начала воспроизведения файла и для паузы достаточно выполнить следующий код соответственно:

Player.start(); player.pause();

HTML5 Media API позволяет получить информацию о проигрываемом видео. Например можно производить все манипуляции с проигрываемым контентом работая с полем ‘currentSrc’ :

Var currentSource = player.currentSrc; // получаем url проигрываемого // контента player.currentSrc = ‘path_to_new_media_source’; // заменяем контент // в проигрывателе

Аналогично обстоит работа с функцией перемотки видео. Данный функционал реализовывается через поле ‘currentTime (принимает знaчение типа float, означает текущее время воспроизведения в секундах):

Var currentTime = player.currentTime; // текущее значение времени // воспроизведения player.currentTime = 60 // перемотка на позицию 1 минуты

Получить длительность проигрываемого файла можно обратившись к полю ‘duration’ . А вместе со значением текущего времени проигрывания несложно вычислить процент просмотренного контента:

Var duration = player.duration; // длительность контента в секундах var proportion = currentTime / duration; // соотношение времени // воспроизведения к // длительности видео.

Существует возможность управления громкостью воспроизведения через поле ‘volume’ :

Player.volume = 1; // включаем полную громкость (для выключения // звука полю нужно присвоить значение “0”)

На этом возможности HTML5 Media API не заканчиваются. Реализации сложных элементов управления может быть осуществлена через механизм событий. Для этого достаточно использовать функцию addEventListenter() . Например, для подписки на событие окончания воспроизведения достаточно выполнить следующее:

Var onEndFunc = function() { // функция, вызываемая при окончании // воспроизведения // какие-то действия } player.addEventListener(‘ended’, onEndFunc); // подписываем функцию // на окончание видео player.removeEventListener(‘ended’, onEndFunc); // отписываем функции // от окончания видео

Ниже представлены все события, существующие в HTML5 Media API.

  • o nabort – событие аварийного завершения проигрывания
  • oncanplay – событие готовности к воспроизведению видео после загрузки достаточной части в буффер
  • oncanplaythrough – событие готовности к воспроизведению после полной загрузки контента в буффер
  • ondurationchange — событие изменения длительности контента
  • onemptied – событие, вызываемое при разрыве соединения
  • onended – событие окончания воспроизведения
  • onerror — событие ошибки при загрузке файла контента
  • onloadeddata – событие загрузки контента
  • onloadedmetadata – событие загрузки метаданных.
  • o nloadstart – событие начала загрузки файла
  • onpause – событие остановки воспроизведения
  • onplay — событие начала воспроизведения
  • onplaying – событие воспроизведения (будет выполняться, пока видео не остановится)
  • onprogress – событие процесса загрузки видео (будет выполняться, пока не будет загружен весь контент)
  • onratechange – событие изменения скорости воспроизведения
  • onreadystatechange – событие изменения состояния готовности видео проигрывателя
  • onseeked – событие окончания перемотки видео
  • onseeking – событие, вызываемое при перемотке контента
  • onstalled – собтие, вызываемое при невозможности браузером получить контент
  • onsuspend – событие, вызываемое при остановке загрузки контента.
  • o ntimeupdate – событие, вызываемое при изменении текущего положения воспроизведения
  • onvolumechange – событие изменения громкости звука
  • onwaiting – событие остановки воспроизведения для буферизации данных

С помощью данных событий можно реализовывать такие элементы видео плеера, как плейлисты, отображение субтитров, показ целевого кадра при перемотке и многие другие.

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

Как было сказано выше, в HTML5 отсутствует инструмент для работы с размером буфера, однако Media API позволяет узнать длительность буферизованной части контента, что необходимо для отображения на полосе перемотки части, доступной к просмотру. Для этого достаточно выполнить следующий код:

Var bufferedTime = player.buffered.end(0); // временная граница // буферизованной части

А теперь самое интересное! Зная длительность контента в буфере можно реализовать динамическое определение качества проигрываемого контента. Для этого нужно реализовать метод, который будет оценивать скорость загрузки информации в буфер и в зависимости ее значения переключать качество видео.

Идея анализа заключается в следующем: мы рассчитываем скорость нарастания буфера, и если она ниже, чем скорость воспроизведения, то проводим расчёт времени до полной буферизации контента и сравниваем его с оставшимся временем воспроизведения. Если время буферизации с рассчитанной скоростью больше отставшего времени проигрывания, то переключаем контент на более низкое качество.

Var bufferAnalizer = function (playbackStartPoint, playbackEndPoint, bufferStartPoint , bufferEndPoint, duration) { var oldQualityObj = this.qualityObj, playbackStart = 0, // new playback start point bufferStart = 0; // new buffer start point if (oldQualityObj) { playbackStart = oldQualityObj.playbackEndPoint; bufferStart = oldQualityObj.bufferEndPoint; } else { playbackStart = playbackStartPoint; bufferStart = bufferStartPoint; } this.qualityObj = { "playbackEndPoint": playbackEndPoint, "bufferEndPoint": bufferEndPoint, "deltaBuffer": bufferEndPoint - bufferStart, // сколько забуферизовано "bufferSpeed": (bufferEndPoint - bufferStart) / (playbackEndPoint - playbackStart), "deltaPlayback": playbackEndPoint - playbackStart, // сколько было //воспроизведено "availTime": bufferEndPoint - playbackEndPoint // разница между буффером и // позицией воспроизведения } var restTime = duration - playbackEndPoint, bufferTime = (duration - bufferEndPoint) / this.qualityObj.bufferSpeed; if ((bufferTime > restTime) && ((this.qualityObj.availTime / this.qualityObj.deltaPlayback) < 2)) { if (this.quality == "normal") { this.quality = "low"; } } }

Подключение субтитров

В стандарте HTML5 существует специальный тэг для отображения субтитров, однако ни один популярный браузер на время написания статьи не поддерживает его. Тем не менее можно реализовать данный функционал руками. Пусть субтитры находятся в файле ‘subs.srt’. Для начала подключим его и занесем содержимое в специальный объект:

Var toSeconds = function(time) { var seconds = 0.0; if (time) { var p = time.split(":"); for (var i = 0; i < p.length; i++) seconds = seconds * 60 + parseFloat(p[i].replace(",", ".")) } return seconds; } $.get(subsSrc, function (data) { data = data.replace(/\r\n\r\n/g, "").split(""); for (var item in data) { var subItem = data.split(/\r\n/g); if (subItem.length > 3) { for (var i = 3; i < subItem.length; i++) { subItem += "
" + subItem[i]; } } var time = subItem.split(" --> "); self.subs.push({ id:subItem, sTime:self.toSeconds(time), eTime:self.toSeconds(time), text:subItem }); } }, "html");

Теперь осталось создать таймер, который будет в зависимости от текущего времени отображать нужные субтитры в div’е с классом ‘.subs’:

Var self = this, lastSub = "empty", currentSub; this.subsTimer = setInterval(function () { for (var item in self.subs) { var currentTime = self.player.currentTime; if ((self.subs.eTime > currentTime) && (self.subs.sTime <= currentTime)) { currentSub = self.subs.text; } else if ((self.subs.eTime < currentTime)) { // no subs now currentSub = " "; } } if (currentSub && (currentSub != lastSub)) { self.container.find(".subs").html(currentSub); lastSub = currentSub; } }, 500);

Preview thumbnails при перемотке

Навряд ли найдется человек, не оценивший удобство отображения кадра для перемещения при перемотке. Реализация данного функционала не является сложной задачей. Для создания preview необходимо поверх основного контейнера с видео создать новый меньшего размера с тем же видео контентом и спозиционировать его точно над курсором:

Self.container.find(".controls").append("");

А после перематываем в данном контейнере видео:

Var self = this; $(".seekbar).bind("mousemove", function (e) { self.cursorX = e.pageX; self.seek(self); }); this.scale = this.container .find(".seekbar").width() / player.duration; var seek = function (context) { $(".thumb").currentTime = (self.cursorX - self.container.find(".seekbar").offset().left) / self.scale; }

Переход в полноэкранный режим

В браузерах Firefox, Safari и Chrome существует специальный API для работы режимом полноэкранного отображения. Механизм позволяет отобразить выбранный div на весь экран. Функции, выполняющие данные действия в этих браузерах названы по-разному, так что Вам придется реализовать вызов обоих.

Var element = document.getElementById(‘player_container’); if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); // Разворачиваем для Firefox } else if (element.webkitRequestFullScreen) { element.width("100%"); element.height("100%"); element.webkitRequestFullScreen(); // Разворачиваем для Chrome и Safari }

Обратите внимание, что для Chrome и Safari помимо перевода контейнера в полный экран реализовано необходимо присвоить его высоте и ширине значения 100%. Это связано с тем, что вызов метода webkitRequestFullScreen() лишь затемнить весь экран и расположит по его центру целевой контейнер. Масштабирование контейнера целиком и полностью переложено на сторону разработчика.

Факт разворачивания на полный экран контейнера моно определить состоянием полей document.mozFullScreenElement для Firefox и document.webkitIsFullScreen для браузеров на WebKit.

Перевод контейнера обратно в режим нормального отображения возможеy функциями отмены.

// Определяем факт полноэкранного отбражения какого-либо контейнера. if (document.mozFullScreenElement || document.webkitIsFullScreen) { if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); // Сворачиваем для Mozilla } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); // Сворачиваем для Chrome и Safari } }

FullScreen API также реализует события изменения состояния отображения – ‘mozfullscreenchange’ и ‘webkitfullscreenchange’ соответственно. Выше было указанно, что масштабирование контейнера в WebKit лежит на разработчике, соответственно при возвращении к нормальному отображению также нужно изменить размеры контейнера с плеером:

Document.addEventListener("webkitfullscreenchange", this.WebkitFullscreenEvent = function() { if (!document.webkitIsFullScreen) { self.container.width(width); self.container.height(height); } });

Другой функционал

Определение размера загружаемого файла.

Как уже было сказано, у разработчика отсутствует возможность определить размер видео файла средствами HTML5. Однако никто не запретит получать его размер от бэкэнда либо при формировании списка воспроизведения, либо при получении адреса файла, либо через обращение к специальному методу.

Переключение аудиодорожек

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

Получение скриншота проигрываемого видео

Если Вам потребовалось снимать скриншот видео, то о реализации этого с использованием можно прочитать .

Эффекты

Приятной особенностью HTML5 Video является то, что к проигрывателю могут быть применены любые эффекты, трансформации и маски, осуществимые через CSS3. Пример подобного функционала можно посмотреть .

HTML5 vs Flash

Существует распространенное мнение, что HTML5 Video является своеобразным «убийцей» Flash, т.к. предлагает схожий функционал. На деле все конечно не совсем так. Для разворачивания премиум видео сервисов HTML5 не подходит, т.к. не поддерживает следующие важные особенности:

  • Потоковое видео. HTML5 подходит лишь для воспроизведения видео файлов.
  • Защита контента. В тоже время Flash предоставляет возможность использование защитных технологий.
  • Единый API и его реализация для всех браузеров.
  • Стандартный формат видео. Разные браузеры = разные форматы видео для HTML5 плеера.

Пример реализации видео плеера

Выводы

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

Полезные ссылки

  • Руководство для разработчика по использованию HTML5 video и audio
  • Демонстрация видео эффектов
  • Доклад о будущем HTML5

PS

В ближайшее время ждите статью об аналитике проигрываемого HTML5 Video.



Загрузка...