jplayer - 在播放列表中的特定时间位置播放每个曲目
问题描述
我希望用户能够从上次暂停或停止的位置继续播放曲目。我将用户密钥保存到 cookie 中,并将选择的曲目和经过的时间存储到数据库中。然后在播放激活的歌曲之前,应将当前时间设置为检索到的经过时间:
IE。用户最近听这两首歌
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-ajax-funcs1.php”正在搜索用户在特定时间(从 event.jPlayer.status.currentTime 开始的经过时间)后暂停的用户密钥和相应的媒体文件名(guid)并返回如果设置了媒体,则经过的时间值(事件:setmedia)。它将通过从最新位置单击播放开始播放,因此用户不必搜索它。
我没有提到如何在播放器暂停后获取经过的时间,并将其存储到数据库中。如果您对我的代码的这一部分感兴趣,您将不得不问。
我希望有人觉得这很有帮助。
推荐阅读
- javascript - 管理网站的文件和扩展名
- javascript - 如何使用正则表达式将 HTML 标签包裹在占位符周围?
- python - 如何为多索引熊猫数据框组合重复的标题列?
- jquery - 格式化数据表中的日期列
- python - 即使导入了pk,也没有反向匹配错误
- sql - Entity Framework 6 中的双重上下文使调用变慢?
- apache-spark - 如果启用 Apache Arrow,SparkR 代码将失败
- regex - PowerShell 多行匹配与正则表达式
- java - 如何将 oAuth2.0 与 Spring boot 1.5.8.RELEASE 集成
- python - 如何将模型从 python 烧瓶迁移到 heroku 中的 cleardb mysql 数据库?