在当前歌曲结束前预加载下一首歌曲

时间:2017-01-13 06:48:20

标签: javascript jquery media-player jplayer

我有一个与jplayer有关的问题。我现在在我的网站上使用jplayer播放歌曲我正在使用ajax调用获取歌曲并将该歌曲添加到jplayer播放列表中,现在它正常工作

我的问题是有没有选择在当前歌曲结束之前准备好下一首歌,因为当我尝试用不到1分钟的歌曲时它的工作正常但是当我每首歌的持续时间超过4分钟时需要3到4秒加载新歌

这是我在jpalyer播放列表中加载歌曲的代码

// for create jplayer and add song in playlist
function play_music(songobj) {
    is_play = 1;
    // $("#jquery_jplayer_1").jPlayer("destroy");
    var playlist_length = songobj.length;
    myPlaylist = new jPlayerPlaylist({
      jPlayer: "#jquery_jplayer_1",
      cssSelectorAncestor: "#jp_container_N"
    },songobj, {
      playlistOptions: {
        enableRemoveControls: true,
        autoPlay: true
      },
      supplied: "oga, mp3",
      wmode: "window",
      useStateClassSkin: true,
      autoBlur: false,
      smoothPlayBar: true,
      keyEnabled: true,
      ended : function(){
        if(playlist_length == currlength){
                // alert('end playlist');
                is_play = 0
                location.reload();
              }
              else{                  
                /*if( == ){
                  console.log('yesssssss');
                }*/
                // console.log(play_index[index_key]);
                // console.log(playlist_obj[currlength]);
                loop = 1;
                currlength += 1;
                var songindex = song_index[currlength - 1];
                  var listindex = playlist_obj[index_key];
                  if(song_index[currlength - 1] == playlist_obj[index_key]){
                    index_key += 1;
                    $("#jquery_jplayer_1").jPlayer("pause", 0);
                    console.log('playlist over start next');
                    setTimeout(function() {
                      $("#jquery_jplayer_1").jPlayer("play", 0);
                    }, $('#timeout').val()*1000);
                  }
              }

            },
          });
  }

如果在播放前有任何预加载所有歌曲的选项,请指导我这对我来说非常重要 感谢

1 个答案:

答案 0 :(得分:1)

在幕后,即使是播放列表,它们也只是一个音频源。 jPlayer& jPlaylist只是包装。

这意味着您无法在当前结束之前加载下一首歌曲,因为这需要更改可能会改变歌曲的音频源。

他们没有建立这样做的方法。也许他们是一种方式,比如在页面上有另一个隐藏的jPlayer并加载下一首歌并以某种方式复制数据而不必加载但我不确定你甚至可能不应该这样做。

加载3-4秒似乎很奇怪,它应该只加载元数据作为默认值,在下面的示例中为5分钟+歌曲它是46KB ......

也许他们的.mp3,.ogg网址有问题。你能发帖吗?

这会立即加载,例如: http://jsfiddle.net/Ls8p90y9/175/

$("#jquery_jplayer_1").jPlayer({
    ready: function () {
        $(this).jPlayer("setMedia", {
            title: "Bubble",
            mp3: "http://www.jplayer.org/audio/mp3/Miaow-01-Tempered-song.mp3"
        });
    },
    timeupdate: function(event) {
        $("#jp_container_1 .jp-ball").css("left",event.jPlayer.status.currentPercentAbsolute + "%");
    },
    supplied: "mp3",
});

尝试搞乱预加载选项:

<强>预加载

  

字符串:(默认值:“元数据”):有效值为“无”,“元数据”和“自动”,与HTML5草案标准相匹配。使用“auto”预加载文件。   预加载是对用户代理的提示,而不是命令。有些浏览器会忽略此选项。