【问题标题】:Play each track at specific time position from a playlist在播放列表中的特定时间位置播放每个曲目
【发布时间】:2020-11-08 11:37:49
【问题描述】:

我希望用户能够从他们上次暂停或停止的位置继续播放曲目。我将用户密钥保存到 cookie 中,并将选择的曲目和经过的时间存储到数据库中。那么在激活的歌曲开始播放之前,当前时间应该设置为检索到的经过时间:

即。用户最近收听这两首歌

song1.mp3n,在 2 秒处停止

song3.mp3 在 100 秒处停止

我找到了一些信息。 Play song at specific time position from a playlist

我想出了以下代码:

$jplay= <<<EOD
var jp = $('#jquery_jplayer_1pl');
jp.on($.jPlayer.event.setmedia,  function(e){
    // For first track (0) - 2 sec, second track (1) - 3 sec, etc.
    //var time = myPlaylist.current + {$time_elapsed};
    var time = {$time_elapsed};

    // Jump to desired time
    setTimeout(function(){ 
       jp.jPlayer( "play", time); 
    }, 100);
});
EOD;

但这仅适用于单人播放版本,除非用户收听的最后一首曲目可以被激活或自动播放。否则每首歌都在同一时间位置。

因此我认为我可以使用“myPlaylist.play(0);”或“myPlaylist.play(2);”,但我不知道怎么做。

更准确地说,当它们被激活时,我想在不同的经过时间位置开始几个轨道。

谢谢。

【问题讨论】:

    标签: jplayer playlist


    【解决方案1】:

    为了让 jplayer 的播放列表播放器版本能够工作,几天后我自己发现了以下基于 jquery 和 ajax 的解决方案。

    $("#jquery_jplayer_1pl").bind($.jPlayer.event.setmedia, function(event) {
    
        $.ajax({
            type: "GET",
            url: 'media-progress-ajax-funcs1.php',
            data: {
                guid: myPlaylist.playlist[myPlaylist.current].mp3, 
                bkmk_key: '<?php echo $bkmk_key; ?>', 
            },
            contentType: "application/json; charset=utf-8",           
            dataType: "json",
            success: function(response) {
                playtrack(response['timeElapsed']);
            }
        });
    });
    
    function playtrack(elapsed) {
        if (elapsed) {
            var jp = $('#jquery_jplayer_1pl');
            var time = parseInt(elapsed);
            // Jump to desired time
            setTimeout(function(){ 
               jp.jPlayer( "pause", time);
            }, 100);
        }
    }
    

    解释:

            data: {
                guid: myPlaylist.playlist[myPlaylist.current].mp3, 
                bkmk_key: '<?php echo $bkmk_key; ?>', 
            }
    

    变量 bkmk_key 是从 cookie 派生的,对于某些用户来说是唯一的。 ajax 函数脚本“media-progress-ajax-funcs1.php”正在搜索用户在特定时间(从 event.jPlayer.status.currentTime 开始的经过时间)后暂停的用户密钥和相应的媒体文件名 (guid),并返回如果设置了媒体,则经过的时间值(事件:setmedia)。它会从最新的位置点击播放开始播放,因此用户无需搜索。

    我没有提到如何获取播放器暂停后经过的时间,并将其存储到数据库中。如果您对我的这部分代码感兴趣,您将不得不询问。

    我希望有人觉得这很有帮助。

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 2023-03-08
      • 2013-08-07
      • 2021-03-04
      • 2021-01-17
      • 1970-01-01
      • 2013-03-11
      • 2013-01-01
      • 2013-08-27
      相关资源
      最近更新 更多