#javascript #html #node.js #ejs
Вопрос:
У меня проблема, когда аудио не воспроизводится, и я не знаю почему.
У меня есть этот тег audio и кнопки в этом документе .ejs, потому что я использую nodejs, и это выглядит так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<audio id="audio">
<source id="audioSource" src="" type="audio/mpeg"/>
Your browser does not support the audio element.
</audio>
<button onclick="playAudio()" type="button">Play Audio</button>
<button onclick="pauseAudio()" type="button">Pause Audio</button>
<button onclick="check()" type="button">Check Audio Status</button>
<script src="/js/sum.js"></script>
</body>
</html>
внизу я подключаю документ JavaScript
, в документе есть несколько функций для каждой кнопки
: воспроизведение, приостановка и проверка состояния
при загрузке браузера, он должен начать воспроизведение одного из 4 файлов mp3, которые у меня есть в моей музыкальной папке
, после этого он прослушивает, когда звук будет завершен.а затем выбирает случайное число 1-4 и устанавливает для источника звука новый звук.
document.getElementById("audio").addEventListener("ended", myFunction);
const audio = document.getElementById("audio");
const source = document.getElementById('audioSource');
let firstTime = 0;
function check(){
if (audio.duration > 0 amp;amp; !audio.paused) {
alert("audio is playing");
} else {
alert("audio is not playing");
}
}
function myFunction() {
const i = Math.floor(Math.random() * 4) 1;
source.src = `/music/sound${i}.mp3`;
audio.play();
}
function playAudio() {
if (firstTime == 0){
firstTime = 1;
let i = Math.floor(Math.random() * 4) 1;
source.src = `/music/sound${i}.mp3`;
audio.play();
} else {
audio.play();
}
}
function pauseAudio() {
audio.pause();
}
Проблема в том, что он ничего не воспроизводит, и я не знаю почему, любая помощь приветствуется
Теоретически это должно выглядеть примерно так: браузер запускается, пользователь нажимает кнопку воспроизведения, и он воспроизводит аудио после аудио с возможностью паузы.
Ответ №1:
Установка источника звука непосредственно на audio
элементе должна помочь. Вот краткий пример.
HTML:
<audio id="audioSource" src=""></audio>
JS:
const audioElement = document.getElementById("audioSource");
audioElement.src = `path/to/your.mp3`
Вы должны добавить какой-то прослушиватель, чтобы гарантировать, что аудио также может воспроизводиться (подробнее об этом см. MDN). Вот расширенная версия предыдущего примера, которую вы могли бы использовать, чтобы убедиться, что:
const audioElement = document.getElementById("audioSource");
function onCanPlay(e) {
this.play();
}
audioElement.addEventListener("canplaythrough", onCanPlay);
audioElement.src = `path/to/your.mp3`
Обратите внимание, что важно установить источник после подключения прослушивателя «can play».