1

我遵循了videojs的快速入门指南,并将以下代码放在了我的 html 文档的正文中:

<video id="video" class="video-js vjs-default-skin" controls width="941" 
      height="531" autoplay preload="auto" data-setup="{}">
  <source type="video/mp4" src="dummy_url">
</video>

一切正常。自动播放和控制到位。

由于我需要在视频结束时删除视频,所以我在视频标签之后放置了以下代码:

<script type="text/javascript">
    _V_("video").addEvent("ended", videoEnd);

    function videoEnd(){
        $('#divId').slideToggle("slow");
        setTimeout("$('#divId').remove()", 700);
    }
</script>

问题是每次我尝试检测一些视频时,自动播放不再起作用。即使以下内容也不会触发自动播放:

<script type="text/javascript">
    _V_("video").ready(function(){

        var myPlayer = this;

        // EXAMPLE: Start playing the video.
        myPlayer.play();

    });

    _V_("video").addEvent("ended", videoEnd);

    function videoEnd(){
        $('#divId').slideToggle("slow");
        setTimeout("$('#divId').remove()", 700);
    }
</script>

关于如何保持自动播放并收听结束事件的任何想法?

4

2 回答 2

1

好吧,我不确定这是否是最正确的实现,但是:

<video id="video" class="video-js vjs-default-skin" controls 
     width="941" height="531" autoplay preload="auto" data-setup="{}">
     <source type="video/mp4" src="dummy_url">
</video>

<script type="text/javascript">
    interval = setInterval(videoLoaded, 100);

    function videoEnd(){
            $('#someid').slideToggle("slow");
            setTimeout("$('#someid').remove()", 700);
        }

    function videoLoaded(){
        if(!_V_.players.video){
            return false;
        }

        _V_.players.video.play();
        _V_.players.video.addEvent("ended", videoEnd);
        clearInterval(interval);
    }

</script>

根据我的阅读,另一种方法是仅通过 js 加载视频。

这是 videojs 初始化视频对象的方式的问题(根据我的阅读)。更多细节可以在这里找到。

希望它有助于一些保险杠:)

于 2012-08-26T21:15:08.380 回答
0

实际上更好的是使用 setTimeout 函数启动 videoLoaded 函数,因为您无法控制播放器(如果需要的话)。

于 2013-04-01T17:47:25.023 回答