【问题标题】:Play song at specific time position from a playlist在播放列表中的特定时间位置播放歌曲
【发布时间】:2015-10-12 10:10:48
【问题描述】:

我正在使用jPlayer 插件。

例如,播放列表中有 13 首歌曲。我想为每首歌曲设置一个开始时间(currentTime),例如:第一首歌曲从 2 秒开始,第二首歌曲从 3 秒开始,第五首歌曲从 4 秒开始。

这是一个例子jsFiddle

在此示例中,我添加了var tag = $('.audio-tag audio')[0]; 以全局查找当前正在播放的歌曲,但它不在 jPlayer 插件中。

如何获取当前音频tag&number为jPlayer播放列表的每首歌曲设置currentTime?

【问题讨论】:

  • “currentTime”是什么意思?这首歌播放了多少次?
  • currentTime 平均秒数(从)开始。我想为每首歌曲设置秒数(开始)。 @alexP
  • 不是每首歌的开始时间都是0吗?抱歉,我不明白这背后的逻辑。
  • 例如,播放列表中有 13 首歌曲。我想为每首歌曲设置一个开始时间(currentTime),例如:第一首歌曲从 2 秒开始,第二首歌曲从 3 秒开始,第五首歌曲从 4 秒开始。你现在明白了么? @alexP
  • 所以它是一个包含多个音轨的音频文件?

标签: javascript jquery audio jplayer


【解决方案1】:

解决方案

var $jp = $('#jquery_jplayer_1');
$jp.on($.jPlayer.event.setmedia,  function(e){
   console.log("Current track", e.jPlayer.status.media);
   console.log("Currentr track index", myPlayer.current);

   // For first track (0) - 2 sec, second track (1) - 3 sec, etc.
   var time = myPlayer.current + 2;

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

注意事项

需要调用setTimeoout,因为根据manual

如果在setMedia 命令之后立即发出,带有time 参数,并且当浏览器使用 HTML5 解决方案时,此命令最初会失败,并设置内部超时以每 100 毫秒重试一次命令,直到成功.

演示

有关代码和演示,请参阅this jsFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 2021-03-04
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多