使用 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 音频的主要内容,如果未能解决你的问题,请参考以下文章

VC中基于Dialog的播放器如何按“ESC”键推出全屏

Android - 按顺序播放多个声音

在javascript函数中使用嵌入[重复]

Java MP3 播放器 - 使用 jLayer 播放、暂停和查找无法按预期工作

使用 javascript onClick 播放 mp3 文件

FF 可以播放 mp3,但不能使用 javascript Audio API