Здравствуйте, уважаемые читатели. Сегодня хотелось бы рассказать Вам о том, как сделать простейший кастомный аудиоплеер с плейлистом. Будем делать его, используя HTML5 и Javascript. В результате, получим вот такой простенький плеер. По внешнему виду похожий на плеер vk.com)
Самый простой способ для воспроизведения аудиофайлов в браузере — использование тэга
:
Например:
Атрибут
controls
отображает стандартные элементы управления, такие как кнопка play/pause, mute.
Различные браузеры отображают плеер со своим дизайном без каких-либо особых возможностей. Если нам необходим настраиваемый аудиоплеер, одним из лучших вариантов будет посмотреть готовые решения, которые были проверены сотнями разработчиков и рядовыми пользователями. Если, вдруг, по какой-то причине мы не хотим использовать готовое решение, например, из-за избыточного функционала или его отсутствия, можно написать собственное решение. Как минимум, это будет полезно в целях самообразования.
Чтобы воспроизвести аудио, используя Javascript, достаточно лишь две строки кода:
let file = new Audio('track1.mp3');
file.play();
Тут создается объект Audio, им-то мы и будем оперировать. Вот краткий список общих методов и свойств:
.play()
запустить проигрывание аудиофайла;
.pause()
поставить на паузу;
.duration
длина дорожки (в секундах). Duration становится доступен только после срабатывания события ‘loadedmetadata’;
currentTime
получить/установить момент проигрывания звуковой дорожки;
Так как данная реализация всего-лишь фронтенд пример, то добавим аудио файлы в локальную папку files (для удобства и налгядности) и захардкодим их названия:
В продакшене нельзя использовать такой подход по очевидным причинам.
Теперь создадим класс Player с такими методами:
init — инициализация плейлиста;
loadFile — загрузить дорожку, при запросе на запуск, только если она еще не было загружена.
play — запустить/поставить на паузу дорожку;
playNext — запустить следующую дорожку;
playPrev — запустить предыдущую дорожку;
setTitle — установить название файла в шапке плеера;
setProgress — установить процент на сколько заполнен прогресс-бар;
countProgress — посчитать в процентах количество проигранного времени;
runProgress — запустить отрисовку заполнения прогресс-бара;
stopProgress — сбросить процент заполненности прогресс-бара;
pickNewProgress — навигация по файлу с помощью клика по прогресс-бару;
toggleStyles — метод для изменения стилей кнопки play/pause и плейлиста;
Помимо этого было использовано еще несколько кастомных функций, код которых можно найти в репозитории.
Логика работы плеера очень простая. Мы читаем массив файлов и записываем его в
this
. Кликнув по дорожке, в плейлисте вызывается метод
play
. Ему мы передаем индекс файла в массиве. Он подгружает дорожку, используя метод
loadFile
Только если дорожка еще не была загружена. Затем метод запускает ее проигрывание. Не забываем и за прогресс-бар. В контексте плеера мы также храним статус (play/pause), индекс текущего файла и переменную с таймаутом. Таймаут мы используем, чтоб раз в секунду (при условии проигрывания файла) мы могли перерисовывать прогресс-бар. Ссылка на демо.
В следующей статье разберем более сложные способы реализации аудиоплеера.
Спасибо за внимание.