【问题标题】:How to make a simple HTML playlist using Jquery如何使用 Jquery 制作一个简单的 HTML 播放列表
【发布时间】:2016-05-30 09:58:15
【问题描述】:

我需要一些帮助,使用音频 html 标签制作一个非常简单的 Jquery 播放列表。到目前为止,我得到了他的:

<audio id="myAudio" preload="auto">
  Your user agent does not support the HTML5 Audio element.
</audio>

和 jquery 部分:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>

$(document).ready(function() {
  bgAudio = document.getElementById("myAudio");
  bgAudio.volume = 0.3;

  bgAudio.controls = true;
  bgAudio.loop = true;
  bgAudio.autoplay = true;

  bgAudio.src = "bg1.mp3";
  bgAudio.src = "bg2.mp3";
  bgAudio.play();

});
</script>

我怎样才能让这 2 个 mp3 一个接一个地播放?感谢您的帮助。

【问题讨论】:

    标签: jquery html audio playlist


    【解决方案1】:

    一种方法是使用audio APIonended 事件绑定到bgAudio 并在那里切换源。

    JS:

    $(document).ready(function() {
    
      var bgAudio = document.getElementById("myAudio");
      var src1 = "bg1.mp3";
      var src2 = "bg2.mp3";
    
      bgAudio.volume = 0.3;
    
      bgAudio.controls = true;
      bgAudio.loop = false;
      bgAudio.autoplay = true;
      bgAudio.src = src1;
    
      bgAudio.onended = function(){
        bgAudio.stop();
        bgAudio.src = src2;
        bgAudio.play();
      }
    
      bgAudio.play();
    
    });
    

    小提琴:https://jsfiddle.net/wpwddq30/

    注意:这是未经测试的,只是为了了解事件

    【讨论】:

      【解决方案2】:
      • 没有可以使用animate 的元素,所以我制作了一个div#bg 并将其包裹在音频元素周围。请记住,如果您想让元素以不透明度淡入,请确保元素以 opacity:0

      • 开头
      • 表达式应为:$('div#bg').animate({opacity: 1}, 1000);

      • 我看了你的问题......它不再有那个animate()了吗?

      • 播放列表在一个数组中。

      • 函数player()document ready 调用(因此您不需要移动设备无论如何都会忽略的autoplay

      • 播放器将连续播放每个音频片段,并在完成播放列表后重新开始(loop 仅适用于一个文件,不适用于播放列表。因此,如果loop=true)

      片段

      MNG- https://vocaroo.com/media_command.php?media=s0Ai9tr7779v&command=download_mp3
      Righteous- https://vocaroo.com/media_command.php?media=s1dKHkbev0dJ&command=download_mp3
      <!doctype html>
      <html>
      
      <head>
        <meta charset="utf-8">
        <title>35478017</title>
      </head>
      
      <body>
        <div id='bg' style="opacity:0">
          <audio id="xAudio" preload="auto"></audio>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
        <script>
          
          // This is a simple array of strings
          var playlist = [
            "https://vocaroo.com/media_command.php?media=s1H9fX5GI9Fa&command=download_mp3",
            "https://vocaroo.com/media_command.php?media=s0Ai9tr7779v&command=download_mp3",
            "https://vocaroo.com/media_command.php?media=s1dKHkbev0dJ&command=download_mp3"
          ];
          
          // Remember that element must start out at opacity:0
          // The duration should be only a number outside of the curly brackets
          $('div#bg').animate({
            opacity: 1
          }, 1000);
      
      
          $(document).ready(function() {
            var xA = document.getElementById("xAudio");
            xA.volume = 0.3;
            xA.controls = true;
      
      
            function player(x) {
              var i = 0;
              xA.src = playlist[x]; // x is the index number of the playlist array 
              xA.load();            // use the load method when changing src
              xA.play();
              xA.onended = function() { // Once the initial file is played it plays the rest of the files
                /* This would be better as a 'for' loop */
                i++;                   
                if (i > 2) {            //         ... Repeat
                  i = 0;                //         ^
                }                       //         ^
                xA.src = playlist[i];   // Rinse,  ^
                xA.load();              // Lather, ^
                xA.play();              // and.....^
              }
            }
            player(0); // Call the player() function at 0 index of playlist array
          });
        </script>
      </body>
      
      </html>

      【讨论】:

      • 动画是给另一个组件的,而不是播放器。当我看到我错误地添加它时,我删除了它。
      • 嗯,它实际上增加了一个很好的触感 IMO。
      • 您的代码运行良好。万分感谢!这是最终结果:tzr.ro
      • 很好,随时,先生。 :-)
      • 这很优雅。
      【解决方案3】:

      我确实稍微改进了答案,所以最初的歌曲会随机开始,其余歌曲会按时间顺序跟随。

      <script>
      
          var playlist = [
              "music/bg1.mp3",
              "music/bg2.mp3",
              "music/bg3.mp3",
              "music/bg4.mp3"
          ];
      
          var n = playlist.length-1;
          var r = 1 + Math.floor(Math.random() * n);
      
          $(document).ready(function() {
              var xA = document.getElementById("myAudio");
              xA.volume = 0.3;
              xA.controls = true;
      
              function player(x) {
                  var i = 0;
      
                  xA.src = playlist[r];
                  xA.load();
                  xA.play();
                  xA.onended = function() {
                      i++;
                      if (i > n) {
                          i = 0;
                      }
      
                      xA.src = playlist[i];
                      xA.load();
                      xA.play();
                  }
              }
              player(0);
          });
          </script>
      

      我正在考虑让所有歌曲以随机播放的方式重复播放,但我相信我需要做一系列数字来倒数或其他什么。仍然。这只是可选的!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 2014-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多