如何使用Jquery制作简单的HTML播放列表

5

我需要一些帮助,使用audio 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>

如何让这两个mp3文件连续播放?感谢您的帮助。
3个回答

1
  • 没有元素可以使用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>


动画是为另一个组件而设计的,而不是玩家。当我发现我错误地添加了它时,我将其删除了。 - user1286956
在我看来,它实际上增添了一些不错的感觉。 - zer00ne
你的代码太棒了,谢谢!这是最终结果:http://www.tzr.ro。 - user1286956
太好了,随时为您效劳,先生。 :-) - zer00ne
1
非常优雅。 - zer00ne

1
一种方法是使用音频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();

});

Fiddle: https://jsfiddle.net/wpwddq30/

注意:这是未经测试的,只是为了给出事件的想法。


0

我稍微改进了答案,所以初始歌曲将随机开始,然后按照时间顺序依次播放其余部分。

<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>

我在考虑以随机方式重复播放所有歌曲,但我相信我需要做一个数字数组来倒数它们或者其他的什么。还是,这只是可选的!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接