获取jPlayer中的当前时间

时间:2013-03-02 07:18:11

标签: php jplayer

我想获得一首歌的当前时间,我正在使用

var currentTime = $('#jquery_jplayer_1').data("jPlayer").status.currentTime;

但是我收到并且错误未捕获的TypeError:无法在控制台中读取未定义的属性“状态”。

我想要做的是假设正在播放一首歌,当用户点击另一首歌的播放按钮时,我希望得到上一首歌的播放时间,然后开始播放所点击的歌曲。

这是我的代码:

var currentTime = $('#jquery_jplayer_1').data("jPlayer").status.currentTime;
alert(currentTime);

$("#jquery_jplayer_1").jPlayer("stop");

var id = "#jquery_jplayer_1";
var media = {
    mp3: audio_element
};
var options = {
    swfPath: "/appystream/assets/jplayer",
    supplied: "mp3",
    wmode: "window"
};
var currentTime = $('#jquery_jplayer_1').data("jPlayer").status.currentTime;
alert(currentTime);

// jPlayer android versions 2.3 fix.
var myFix = new jPlayerAndroidFix(id, media, options);
myFix.setMedia(media).play();
setTimeout(function () {
    myFix.setMedia(media).play();
}, 2000);

无论我在哪里放置代码来获取当前时间,它都会响应上面给出的错误。

我做错了什么?我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

我认为你是以错误的方式做事。我这样做的方式是:

$(document).ready(function(){

    $("#jp").jPlayer({
        ready: function () {
            $(this).jPlayer("setMedia", {
                m4v: "http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4v",
                ogv: "http://www.jplayer.org/video/ogv/Big_Buck_Bunny_Trailer_480x270.ogv",
                poster: "http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png"
            });
        },
        ended: function (event) {
            $(this).jPlayer("play");
        },
        swfPath: "js",
        supplied: "m4v, ogv"
    });

    $("#jp").bind($.jPlayer.event.timeupdate, function(event) { 
        var currentTime = Math.floor(event.jPlayer.status.currentTime)

        if (currentTime < 3){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/slide1.png'/>");  
        }

        if (currentTime >= 3 && currentTime < 12){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/slide2.png'/>");  
        }

        if (currentTime >= 12 && currentTime < 16){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/slide3.png'/>");  
        }

        if (currentTime >= 16 && currentTime < 22){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/slide4.png'/>");  
        }

        if (currentTime >= 22 && currentTime < 30){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/slide5.png'/>");  
        }


        if (currentTime >= 30){
            $("#slideshow").html("<img src='http://yoursite.com.com/wm/jplayer/slides/fin.png'/>"); 
        }



    });


});

答案 1 :(得分:1)

我知道确实是一个老问题,但我只需要你希望得到的答案并找到解决方案。

这可能是你想要的东西?

$("#jquery_jplayer_1").jPlayer()[0].childNodes[1].currentTime

如果没有,请在$(“#jquery_jplayer_1”)。jPlayer()[0] .childNodes中查找音频元素。但据我所知,那里应该只有两个元素 - img和audio。音频是第二个,这就是你做childNodes [1]的原因。

希望这有帮助