使用 JavaScript 按顺序播放 MP3 文件,无需 HTML5 音频
Posted
技术标签:
【中文标题】使用 JavaScript 按顺序播放 MP3 文件,无需 HTML5 音频【英文标题】:Play MP3 files in order without HTML5 audio with JavaScript 【发布时间】:2016-09-19 17:37:44 【问题描述】:我正在尝试使用没有 html5 音频标签的 javascript 一个接一个地播放三个 MP3 文件。 [我在 Articulate Storyline 工作,这是一个用于电子学习的创作工具。它支持文件内的 Javascript,但不支持 HTML]
到目前为止,我所拥有的最好的是以下同时播放:
function myFunction()
var audio1 = new Audio('http://www.mysite.co.uk/h/welcome.mp3');
var audio2 = new Audio('http://www.mysite.co.uk/h/name.mp3');
var audio3 = new Audio('http://www.mysite.co.uk/h/cont.mp3');
audio1.play();
audio2.play();
audio3.play();
我考虑过“等待”功能,但我只知道如何使用 JQuery 正确执行此操作,如果我没记错的话,Articulate Storyline 不支持 JQuery,即使它托管在其他地方。
非常感谢任何帮助
【问题讨论】:
【参考方案1】:您可以使用事件处理程序来监听音频播放结束,然后播放下一个等。
function play(audio)
audio.play();
return new Promise(function(resolve, reject)
audio.addEventListener('ended', resolve);
);
function myFunction()
var audio1 = new Audio('http://www.mysite.co.uk/h/welcome.mp3');
var audio2 = new Audio('http://www.mysite.co.uk/h/name.mp3');
var audio3 = new Audio('http://www.mysite.co.uk/h/cont.mp3');
play(audio1).then(function()
return play(audio2);
).then(function()
return play(audio3);
);
【讨论】:
太完美了!谢谢!与我为获取用户名变量而预先编写的代码完美结合。再次感谢您【参考方案2】:我建议您使用音频 onended 事件。只需听一个播放器停止然后播放下一个播放器。
示例: 一种方法是将玩家添加到数组中以更好地控制
var players = [audio1,audio2,audio3];
var counter = 0;
audio1.onended = playNext;
function playNext()
if(counter <= players.length)
counter++
players[counter].play();
players[counter].onended = playNext;
已启用:http://www.w3schools.com/tags/av_event_ended.asp
希望对你有帮助
【讨论】:
【参考方案3】:您可以使用这个简单的方法来播放无限的文件:
PlayAll= function (pathList)
if(pathList.length>0)
var audio = new Audio(pathList[0]);
if(pathList.length>1)
var count = 1;
$(audio).on('ended', function ()
if (count < pathList.length)
audio.src = pathList[count];
audio.play();
count++;
);
audio.play()
;
【讨论】:
以上是关于使用 JavaScript 按顺序播放 MP3 文件,无需 HTML5 音频的主要内容,如果未能解决你的问题,请参考以下文章
Java MP3 播放器 - 使用 jLayer 播放、暂停和查找无法按预期工作