javaScript 无法播放音频

Audio does not play through javaScript

我遇到音频无法播放的问题,我不知道为什么。

我在这个 .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 && !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(); 
} 

问题是,它没有播放任何内容,我不知道为什么,感谢您的帮助

理论上它应该是这样的——浏览器启动,用户点击播放,然后一个接一个地播放音频,并具有暂停的能力。

直接在 audio 元素上设置音频源应该会有所帮助。这是一个简单的例子。

HTML:

<audio id="audioSource" src=""></audio>

JS:

const audioElement = document.getElementById("audioSource");
audioElement.src = `path/to/your.mp3`

您应该添加某种监听器以确保音频也可以 播放(see MDN for details on this)。这是上一个示例的扩展版本,您可以使用它来确保:

const audioElement = document.getElementById("audioSource");

function onCanPlay(e) {
  this.play();
}

audioElement.addEventListener("canplaythrough", onCanPlay);

audioElement.src = `path/to/your.mp3`

请注意,在附加“可以播放”侦听器后设置源很重要