Moovie.js: демонстрация, установка (браузер и NPM), CDN, поддержка субтитров
Демонстрация:
Демонстрацию можно найти по ссылке: https://mooviejs.com/.
Установка (браузер):
<script src="path/to/moovie.js"></script>
<link rel="stylesheet" href="path/to/moovie.css">
<video id="example" poster="<<path-to-poster>>">
<source src="<<path-to-file.mp4>>" type="video/mp4">
<track kind="captions" label="Portuguese" srclang="pt" src="<<path-to-caption.vtt>>">
<track kind="captions" label="English" srclang="en" src="<<path-to-caption.vtt>>">
Ваш браузер не поддерживает тег video.
</video>
document.addEventListener("DOMContentLoaded", function() {
var demo = new Moovie({
selector: "#example",
dimensions: {
width: "100%"
}
});
});
Примечание: не забудьте включить папку «icons».
Установка (NPM):
npm i mooviejs
<link rel="stylesheet" href="path/to/moovie.css">
<video id="example" poster="<<path-to-poster>>">
<source src="<<path-to-file.mp4>>" type="video/mp4">
<track kind="captions" label="Portuguese" srclang="pt" src="<<path-to-caption.vtt>>">
<track kind="captions" label="English" srclang="en" src="<<path-to-caption.vtt>>">
Ваш браузер не поддерживает тег video.
</video>
const Moovie = require('mooviejs');
var demo = new Moovie({
selector: "#example",
dimensions: {
width: "100%"
},
icons: {
path: "<path/to/icons/folder>"
}
});
CDN:
Вы можете использовать наш CDN (предоставленный JSDelivr) для файлов JavaScript и CSS.
// Javascript
<script src="https://cdn.jsdelivr.net/gh/BMSVieira/moovie.js@latest/js/moovie.min.js"></script>
// CSS
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/BMSVieira/moovie.js@latest/css/moovie.min.css">
Субтитры:
В настоящее время поддерживается формат WebVTT (.vtt) и SubRip (.srt). Динамически (требуется публичный сервер)
Используйте стандартный HTML, как в примере ниже (источник должен находиться на публичном сервере с заголовками cross-origin).
<video>
<track kind="captions" label="<<Язык>>" srclang="<<Исходный язык>>" src="<<путь к caption.vtt/.srt>>">
</video>
Локально (не требуется сервер или загрузка)
Поскольку браузеры не позволяют отображать субтитры, загруженные локально, вы можете использовать встроенную функцию moovie, которая позволяет добавлять локальные субтитры без сервера или какой-либо загрузки.
При загрузке файлов субтитров локально убедитесь, что файл сохранён с кодировкой UTF-8, иначе вы столкнётесь с некоторыми ошибками расшифровки, такими как «�».
Видеоплеер ➔ ⚙️ ➔ Субтитры ➔ Загрузить локально
⚠️ Этот метод НЕ загружает ничего на сервер/папку/каталог.
Регулировка смещения субтитров:
Можно отрегулировать смещение в общей сложности на 10 секунд (-5 / +5) на лету.
Горячие клавиши:
Плеер привяжет следующие сочетания клавиш, когда он будет в фокусе.
Клавиша | Описание |
---|---|
SpaceBar |
Переключить воспроизведение |
K |
Переключить воспроизведение |
F |
Переключиться в полноэкранный режим |
C |
Включить субтитры |
M |
Включить/выключить звук |
ArrowRight |
Прокрутить вперёд на 5 секунд |
ArrowLeft |
Прокрутить назад на 5 секунд |
Shift +W
|
Увеличить размер субтитров |
Shift +S
|
Уменьшить размер субтитров |
API > Методы:
togglePlay: Воспроизвести/поставить на паузу видео
demo.togglePlay();
toggleSubtitles: Включить/отключить субтитры
demo.toggleSubtitles();
toggleFullscreen: Включить/отключить полноэкранный режим
demo.toggleFullscreen();
destroy: Удалить текущий плеер и отвязать все его события
demo.destroy();
build: Создать новый плеер
demo.build();
addTrack: Добавить несколько/одиночные субтитры к плееру
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
label |
string |
New Subtitle |
Название новых субтитров в поле субтитров |
srclang |
string |
New |
Страна назначения |
src |
string |
--- |
Путь к файлу [Не может быть пустым] |
```javascript
demo.addTrack({
options : {
0: {
label: 'Italian',
srclang: "it",
src: "<<path-to-file.vtt/.srt"
},
1: {
label: 'Spanish',
srclang: "es",
src: "<<path-to-file.vtt/.srt"
}
},
onComplete: function(){
console.log("Completed!");
}
});
```
Имя | Тип | Описание |
---|---|---|
video > videoSrc
|
string |
Новый источник видео |
video > posterSrc
|
string |
Новый источник постера |
captions > clearCaptions
|
boolean |
Удалить все доступные субтитры в меню |
```javascript
demo.change({
video: {
videoSrc: "<<path-to-video>>",
posterSrc: "<<path-to-poster>>"
},
captions:{
clearCaptions: true
},
onComplete: function(){
console.log("Completed!");
}
});
```
API > Gets:
// Возвращает элемент DOM плеера demo.playerElement
// Возвращает логическое значение, указывающее, воспроизводится ли текущий плеер. demo.playing
// Возвращает логическое значение, указывающее, приостановлен ли текущий плеер. demo.paused
// Возвращает логическое значение, указывающее, остановлен ли текущий проигрыватель. demo.stopped
// Возвращает логическое значение, указывающее, закончил ли текущий игрок воспроизведение. demo.ended
// Возвращает currentTime игрока. demo.currentTime
// Возвращает продолжительность текущего медиа. demo.duration
// Возвращает логическое значение, указывающее, ищет ли текущий игрок. demo.seeking
// Возвращает громкость плеера. demo.volume
// Возвращает логическое значение, указывающее, приглушён ли текущий плеер. demo.muted
// Возвращает текущую скорость воспроизведения demo.speed
// Возвращает минимальную разрешённую скорость demo.minimumSpeed
// Возвращает максимальную разрешённую скорость demo.maximumSpeed
// Возвращает минимальное допустимое смещение субтитров demo.minimumOffset
demo.maximumOffset
**// Возвращает текущее смещение заголовка**
demo.captionOffset
**// Возвращает текущий источник проигрывателя**
demo.source
// Устанавливает currentTime на заданное число (секунды)
demo.currentTime = 60
// Устанавливает громкость проигрывателя на заданное число (0,5 — половина громкости)
demo.volume = 0.5
// Устанавливает скорость воспроизведения проигрывателя на заданное число (от 0,1 до 8)
demo.speed = 2
// Устанавливает смещение заголовка проигрывателя на заданное число (-5 до 5)
demo.captionOffset = 2
// Включает или выключает проигрыватель (логическое значение)
demo.muted = true
Название и информация | Пример | |
---|---|---|
![]() |
WebTorrent Для получения дополнительной информации ознакомьтесь с документацией WebTorrent. |
Codepen |
![]() |
dash.js Для получения дополнительной информации прочитайте документацию dash.js. |
Codepen |
![]() |
Shaka Player Для получения дополнительной информации прочтите документацию Shaka Player. |
Codepen |
![]() |
hls.js Для получения дополнительной информации ознакомьтесь с документацией hls.js. |
Codepen |
Используя стандартные события мультимедиа, вы можете прослушивать события на целевом элементе, который вы настроили. Ознакомьтесь с примером ниже:
demo.video.addEventListener("canplay", (event) => {
console.log(event);
});
Событие | Описание |
---|---|
abort |
Отправляется, когда воспроизведение прерывается; например, если воспроизводимое медиа перезапускается с начала, это событие отправляется. |
canplay |
Отправляется, когда доступно достаточно данных для воспроизведения медиа, по крайней мере, на несколько кадров. |
canplaythrough |
Отправляется, когда readyState изменяется на HAVE_ENOUGH_DATA, указывая на то, что всё медиа можно воспроизводить без прерываний, при условии, что скорость загрузки остаётся хотя бы на текущем уровне. |
durationchange |
Метаданные загружены или изменены, что указывает на изменение длительности медиа. |
emptied |
Медиа стало пустым; например, это событие отправляется, если медиа уже было загружено (или частично загружено), и вызывается метод load() для его перезагрузки. |
error |
Отправляется при возникновении ошибки. Атрибут элемента error содержит дополнительную информацию. |
interruptbegin |
Отправляется, когда аудио, воспроизводимое на устройстве Firefox OS, прерывается, либо потому, что приложение, воспроизводящее аудио, отправляется в фоновый режим, либо начинает воспроизводиться аудио в более приоритетном аудиоканале. |
interruptend |
Отправляется, когда ранее прерванное аудио на устройстве Firefox OS возобновляет воспроизведение — когда прерывание заканчивается. |
loadeddata |
Первый кадр медиа завершил загрузку. |
loadedmetadata |
Метаданные медиа завершили загрузку; все атрибуты теперь содержат столько полезной информации, сколько они собираются получить. |
loadstart |
Отправляется, когда начинается загрузка медиа. |
pause |
Отправляется, когда состояние воспроизведения изменено на приостановленное (свойство paused имеет значение true). |
play |
Отправляется, когда состояние воспроизведения больше не приостановлено в результате метода play или атрибута autoplay. |
playing |
Отправляется, когда у медиа достаточно данных, чтобы начать воспроизведение, после события play, но также при восстановлении после остановки, когда зацикливающееся медиа перезапускает, и после seeked, если оно воспроизводило перед поиском. |
Изменение скорости| Отправляется при изменении скорости воспроизведения.
Завершение поиска| Отправляется после завершения операции поиска.
Начало поиска| Отправляется, когда начинается операция поиска.
Остановка| Отправляется, когда пользовательский агент пытается получить данные медиа, но данные неожиданно не поступают.
Приостановка| Отправляется при приостановке загрузки медиа; это может произойти либо потому, что загрузка завершена, либо по какой-либо другой причине.
Обновление времени| Значение, указанное в атрибуте currentTime элемента, изменилось.
Изменение громкости| Отправляется при изменении громкости аудио (как при установке громкости, так и при изменении атрибута muted).
Ожидание| Отправляется, когда запрошенная операция (например, воспроизведение) задерживается до завершения другой операции (например, поиска).
Смена субтитров| Отправляется при смене субтитров.
Смещение субтитров| Отправляется при смещении субтитров.
Переключение субтитров| Отправляется при переключении состояния субтитров.
Используя CSS Custom Properties, вы можете легко настроить свой собственный проигрыватель. Проверьте ниже список переменных и их назначение:
Имя | Описание | По умолчанию |
---|---|---|
--moovie_main_color |
Основной цвет Moovie | #3191f7 |
--moovie_bg_controls |
Цвет фона при наведении на кнопки | rgba(16, 34, 62, 0.6) |
--moovie_bg_submenu |
Цвет фона подменю | #f7f7f7 |
--moovie_bg_cuetimer |
Цвет фона таймера | #2b2b2b |
--moovie_submenu_options_fcolor |
Цвет текста подменю | #515151 |
--moovie_topic_submenu_fcolor |
Цвет текста темы подменю | #797979 |
--moovie_currenttime_color |
Цвет текста CurrentTime | белый |
--moovie_submenu_options_fsize |
Размер шрифта опций подменю | 10pt |
--moovie_topic_submenu_fsize |
Размер шрифта темы подменю | 9pt |
--moovie_currenttime_fsize |
Размер шрифта CurrentTime | 11pt |
--moovie_cuetimer_fsize |
Размер шрифта таймера | 9pt |
--moovie_svgicons_width |
Размер значков | 15px |
--moovie_padding_controls |
Отступ панели управления | 13px |
--moovie_caption_fcolor |
Цвет текста субтитров | белый |
--moovie_cuetimer_fcolor |
Цвет шрифта таймера | белый |
Moovie использует значки в формате .svg, которые хранятся в папке icons, расположенной по умолчанию в корневом каталоге, однако вы можете указать новое местоположение в параметрах конфигурации.
config: {
icons: {
path: "./path/to/folder/"
}
}
Структура папки:
moovie/
├── icons/
│ ├── back.svg
│ ├── caption.svg
│ ├── cc.svg
│ ├── cog.svg
│ ├── fullscreen.svg
│ ├── mute.svg
│ ├── next.svg
│ ├── pause.svg
│ ├── play.svg
│ └── volume.svg
|
├── css/
│ ├── moovie.css
|
└── js/
├── moovie.js
Существуют внешние плагины, которые можно использовать для добавления дополнительных функций. Чтобы вызвать плагин, следуйте примеру ниже:
<!-- Включить путь плагина после moovie.js -->
<script src="path/to/plugin.js"></script>
По умолчанию плагины находятся в папке ./js/plugins/, но вы можете указать новое расположение.
// Инициализировать Moovie
var demo = new Moovie({selector: "#example"});
// Вызвать внешний плагин (пример плейлиста)
var PlaylistPlugin = new _Moovie_Playlist({reference: demo});
Список доступных плагинов:
Название | Описание |
---|---|
_Moovie_Playlist | Создать плейлист видео |
Вы можете добавить несколько событий, которые будут выполняться в определённое время, например:
var demo = new Moovie({
selector: "#example",
customEvents: [
{
type: "skip",
to: "56",
starttime: "10",
endtime: "20",
content: **Укажите расположение папки с иконками**
```javascript
document.addEventListener("DOMContentLoaded", function() {
var demo = new Moovie({
selector: "#example",
moovie_internalID: null, // Перезаписывает сгенерированный randomID
dimensions: {
width: "100%"
},
config: {
main : {
loop: true
},
storage: {
captionOffset: false,
playrateSpeed: false,
captionSize: false
},
controls : {
playtime : true,
mute : true,
volume : true,
subtitles : true,
config : true,
fullscreen : true,
submenuCaptions : true,
submenuOffset : true,
submenuSpeed : true,
allowLocalSubtitles : true
},
i18n : {
play : "(Play:Pause)",
mute : "(Mute:Unmute)",
subtitles : "(Enable:Disable) Subtitles",
config : "Settings",
fullscreen : "(Enter:Exit) Fullscreen",
main_topic: "settings:",
main_caption: "Captions",
main_offset: "Caption Offset",
main_speed: "Speed",
main_disabled: "Disabled",
main_default: "Default",
caption_topic: "Captions:",
caption_back: "Back",
caption_load: "Load Locally",
offset_topic: "Adjust Caption Offset",
speed_topic: "Speed Adjust"
}
},
icons: {
path: "./path/to/folder/"
}
});
});
Спасибо компании JetBrains за поддержку этого проекта своими невероятными инструментами!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )