Bliss.js предоставляет мощный и удобный API для работы с видео и аудио в браузере, упрощая создание интерактивных мультимедийных приложений. Основное преимущество библиотеки — это минимизация работы с нативными HTMLMediaElement и удобная интеграция с DOM через цепочки методов.
Для работы с видео и аудио достаточно создать объект элемента с
помощью Bliss.$. Пример создания видеоэлемента:
const video = Bliss.$('video', {
src: 'video.mp4',
controls: true,
autoplay: false,
loop: false
});
document.body.appendChild(video);
Для аудио это аналогично:
const audio = Bliss.$('audio', {
src: 'audio.mp3',
controls: true,
autoplay: false,
loop: true
});
document.body.appendChild(audio);
Ключевые параметры, которые поддерживаются при создании:
src — путь к файлу медиа.controls — отображение стандартных элементов
управления.autoplay — автоматическое воспроизведение после
загрузки.loop — повтор воспроизведения при окончании.Bliss.js предоставляет удобные методы для управления воспроизведением медиа:
video.play(); // Запуск воспроизведения
video.pause(); // Пауза
video.stop(); // Полная остановка и сброс к началу
video.toggle(); // Переключение между play и pause
Для аудио методы идентичны. Особенность Bliss.js — возможность использовать цепочку вызовов для одновременного управления несколькими элементами:
Bliss.$('audio, video').play();
Bliss.js упрощает работу с громкостью и текущей позицией воспроизведения:
video.volume(0.5); // Установка громкости на 50%
video.currentTime(30); // Перемотка на 30 секунду
Методы поддерживают как чтение, так и запись значения:
const volume = video.volume(); // Получение текущей громкости
const position = video.currentTime(); // Текущее время воспроизведения
Bliss.js позволяет удобно подписываться на события медиаплеера через
метод on. Примеры ключевых событий:
play — начало воспроизведения.pause — пауза.ended — завершение воспроизведения.timeupdate — обновление текущего времени.volumechange — изменение громкости.Пример использования:
video.on('play', () => console.log('Видео началось'));
video.on('timeupdate', () => {
console.log(`Текущее время: ${video.currentTime()}`);
});
Bliss.js упрощает создание собственных элементов управления без необходимости работать напрямую с HTMLMediaElement API:
const playButton = Bliss.$('button', { textContent: 'Play' });
playButton.on('click', () => video.toggle());
document.body.appendChild(playButton);
const volumeSlider = Bliss.$('input', { type: 'range', min: 0, max: 1, step: 0.01 });
volumeSlider.on('input', (e) => video.volume(e.target.value));
document.body.appendChild(volumeSlider);
Bliss.js позволяет управлять коллекцией аудио или видео, упрощая создание плейлистов:
const playlist = [
'track1.mp3',
'track2.mp3',
'track3.mp3'
];
let current = 0;
const player = Bliss.$('audio', { src: playlist[current] });
player.on('ended', () => {
current = (current + 1) % playlist.length;
player.src(playlist[current]).play();
});
document.body.appendChild(player);
Для видео можно применять CSS-фильтры напрямую через Bliss.js, сохраняя цепочность вызовов:
video.css({
filter: 'grayscale(50%) contrast(120%)',
transform: 'scale(1.1)'
});
Также можно создавать анимации с помощью встроенных методов анимации:
video.animate({ opacity: 0 }, 1000).then(() => video.animate({ opacity: 1 }, 1000));
Bliss.js поддерживает потоковое воспроизведение через передачу URL потокового ресурса:
const stream = Bliss.$('video', { src: 'https://example.com/live/stream.m3u8', controls: true });
document.body.appendChild(stream);
stream.play();
При этом события и методы управления работают аналогично локальному файлу, что облегчает интеграцию с live-стримингом и радио-потоками.
Элементы мультимедиа можно легко интегрировать в интерфейс с другими элементами:
const container = Bliss.$('.player-container');
container.append(video);
container.append(playButton);
container.append(volumeSlider);
Поддерживаются методы для управления группой элементов, а также возможность использования Bliss.js-селектора для динамического добавления новых медиа:
Bliss.$('.player-container video').volume(0.7);
preload="metadata", чтобы уменьшить загрузку сети.timeupdate только при необходимости, чтобы не перегружать
интерфейс.Bliss.js делает работу с мультимедиа в JavaScript компактной и выразительной, объединяя возможности нативного HTMLMediaElement с цепочкой удобных методов для управления, кастомизации и интеграции элементов видео и аудио в интерфейс.