在播放列表中的特定时间位置播放每首曲目



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

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

song1.mp3n,在2秒时停止

song3.mp3在100秒时停止

我在上找到了一些信息。在播放列表的特定时间位置播放歌曲

我想出了以下代码:

$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的播放列表播放器版本,几天后我自己找到了以下基于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-jax-funcs1.php"正在搜索用户在一段时间后暂停的用户密钥和相应的媒体文件名(guid((从event.jPlayer.status.currentTime开始经过的时间(,并在设置了媒体时返回经过的时间值(event:setmedia(。它将通过点击最新位置的播放开始播放,因此用户不必搜索它

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

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

最新更新