Новый вид mozilla vlc plugin

в 14:12, , рубрики: javascript, vlc, Веб-разработка, метки: ,

При реализации одного из проектов столкнулся с небольшой задачей, а именно встраивание на страницу сайта vlc плеера при этом плеер должен поддерживать возможность стилизации и воспроизведение рекламного ролика перед проигрыванием основного медиафайла или потока.
Так как ранее уже доводилось встраивать vlc на страницу сайта (воспроизведение с камер), сразу же отправился на страницу вики проекта vlc. Детальное изучение, которой показало, что стандартными методами это реализуемо, но готовых решений не представлено. Помня, что «лень двигатель прогресса» отправился в google искать варианты встраивания плеера. Потратив несколько часов, пришёл к выводу, что существующих реализаций совсем не много и большинстве своем берут начало от разработанного Julien Bouquillon плагина «VLCcontrols». Одна проблема данный плагин обновлялся последний раз в 2010 году.

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

Что необходимо было сделать

  • Разработать интерфейс плеера с возможность легко его изменить.
  • Реализовать базовых функций плеера (воспроизведение, стоп, пауза, регулирование звука, полноэкранный режим).
  • Написать функционал позволяющий показать рекламу, которая не блокировалась бы AdBlock.
  • Реализовать поддержку дополнительных методов, которые поддерживаются mozilla vlc plugin.
  • Максимально упростить интеграцию на страницу.
  • Поддержка различными браузерами.

Закончив с подготовительной работой, сперва решил все же переделать плагин «VLCcontrols». О том, что я глубоко ошибся в выборе, до меня дошло уже после переделки. Некоторые функции работали не так, как мне было нужно, ну а другие вообще переставали работать при вроде бы обычных действиях. Ну ладно, на ошибках учатся, буду писать все с нуля.
Сказано-сделано, первая версия была написана быстрее, чем переделывался плагин. Потом были еще версии, в которых добавлялись другие функции, но ломались уже реализованные. В конечном итоге появилась стабильная версия с поддержкой большинства функционала vlc plugina, заказчик принял работу, но добавил еще по реализации дополнительных функций.

Что же реализовано в данной обертке?
  • Автоматическое воспроизведение сразу после загрузки плагина.
  • Демонстрация рекламного ролика с возможностью настройки времени демонстрации(AdBlock не блокирует)
  • Возможность менять вид плеера изменив css файл.
  • Поддержка всех базовых функций плеера
  • Изменение соотношения сторон, чересстрочности, аудиоканалов
  • 2 вида полноэкранного режима (стандартный и через HTML5 Fullscreen API)
  • Включение режима, при котором на плеер, возможно, накладывать различные эффекты css
  • Воспроизведение видеофайла из куков или из указанного параметра

Работает все это очень просто.

Подключаем скрипт к сайту и просто вызываем плеер, передавая ему параметры:

hPlayer.init();

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

wrapper — Принимает id DOM контейнера, в который необходимо загрузить плеер.
* ID элемента — Плеер будет загружен в указанный DOM контейнер.
* NULL(не задано значение) — Плеер будет загружен в контейнер по умолчанию(id=»hPlayer»).

mode — Указание какой из плагинов инициализировать для дальнейшего проигрывания контента.
* http — загрузка vlc плагина.
* NULL(не задано значение) — загрузка оболочки без инициализации плагина.

stream — Поток видео данных, который необходимо воспроизвести в плеере.
* ‘Поток данных’ — после загрузки всех настроек и инициализации плеера будет запущено проигрывание указанного потока.
* NULL(не задано значение) — загрузка оболочки и инициализация плагина.

windowless
* true — включение облегченного режима воспроизведения плагином. Активирует возможности манипуляций с плагином средствами CSS. Не стабильная функция. При использовании переключение в полноэкранный режим реализовано при помощи Fullscreen API.
* NULL(не задано значение) — наследование установленных ранее настроек (по умолчанию «false»).

ad_state
* true — активирует показ рекламного видеоролика перед воспроизведением основного медиафайла.
* NULL(не задано значение) — наследование установленных ранее настроек (по умолчанию «false»).

ad_link
* ‘http://site.com/adsvideo.avi’ — ссылка на медиафайл который будет транслироваться при активации ad_state.
* NULL(не задано значение) — наследование установленных ранее настроек (по умолчанию «пусто»).

ad_time
* ‘время в миллисекундах’ — указание длительности показа рекламного медиафайла.
* NULL(не задано значение) — наследование установленных ранее настроек (по умолчанию «10000 мс/10 секунд»).
Примеры

Обычный запуск с передачей параметров.

hPlayer.init({
            wrapper: 'hPlayer',
            autoplay: true,
            loop: true,
            windowless: true,
            stream: 'http://site.com.ua/mainvideo.avi',
            mode: 'http'
});

Воспроизведение рекламы перед проигрыванием основного файла.

hPlayer.init({
            wrapper: 'hPlayer',
            stream: 'http://site.com.ua/mainvideo.avi',
            autoplay: true,
            loop: true,
            mode: 'http',
            ad_state:true,
            ad_link: 'http://site.com.ua/videofile.flv',
            ad_time: 10000
});

Забрать и пользоваться можно на гитхабе: github.com/zpvs/hplayer

При разработке использованы материалы:
Плагин Julien Bouquillon VLCcontrols
Документация с wiki VideoLAN

Автор: zpvs

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js