MediaElement.JS&适用于iPad的setCurrentTime()

时间:2012-03-21 13:34:30

标签: mediaelement.js

我目前正在将MediaElement.js用于我网站上的HTML5视频页面。

当用户离开页面/网站时,我保存视频的位置,以便当他们从中断的地方返回时。

我在浏览器中工作正常但是当我尝试使用iPad时,我无法使用setCurrentTime()

我在播放事件和loadedmetadata事件中尝试过使用以下内容 两者都可以在Chrome中正常使用,但不适用于iPad。

player.addEventListener('loadedmetadata', function (e) {
    if (savedPosition > 0) {
        // Debug
        console.log('[StartFrom]' + savedPosition);

        // Set the start time from the relation in seconds
        player.setCurrentTime(savedPosition);

        // Debug
        console.log('[CurrentPosition]' + player.currentTime);

        // Set the video has played flag - so if paused and played it is not 
        // reset to start time

        videoHasPlayed = true;
    }
}, false);

有没有人对如何帮我解决这个问题有任何明智的想法? https://github.com/johndyer/mediaelement/issues/243

1 个答案:

答案 0 :(得分:1)

我已经找到了解决我自己的问题的方法,经过各种研究后我将代码移到了timeupdate事件中,它在iPad上工作正常,现在是台式机。

确保使用布尔值来阻止逻辑进入疯狂循环。

    //EVENT - When the video time has been updated
    player.addEventListener('timeupdate', function (e) {

        //If video has not been played AND savedPosition is greater than 0  
        if (!videoHasPlayed && savedPosition > 0) {

            //Debug
            console.log('[StartFrom - meta]' + savedPosition);

            //Set the start time from the relation in seconds (MediaElement)
            player.setCurrentTime(savedPosition);

            //Debug
            console.log('[CurrentPosition - meta]' + player.currentTime);

            //Set the video has played flag
            //Otherwise be continual loop of going back to this time
            //This event gets called around every 250ms
            videoHasPlayed = true;
        }
    }, false);