使用addevent时,VideoJs的自动播放未被触发

VideoJs autoplay not tiggered when using addevent

本文关键字:自动播放 addevent VideoJs 使用      更新时间:2023-09-26

我遵循了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>

你知道我如何保持自动播放并收听结束的事件吗?

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

<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初始化视频对象的方式的一个问题。更多详细信息可以在这里找到。

希望它能帮助一些保险杠:)

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