首页 文章

HTML5 <video>回调?

提问于
浏览
32

我坚持使用HTML5的视频标签作为其部分视频内容的传送方式 . 我目前已经启动并运行http://videojs.com/的一些帮助来处理Internet Explorer Flash后备 .

他们要求我做的一件事是,在视频完成播放后(它们的长度各不相同),将它们淡出然后淡出图片代替视频 - 将其想象成后面的海报帧该视频 .

这甚至可能吗?你能通过Javascript或其他方法获得当前正在播放的电影的时间码吗?我知道Flowplayer(http://flowplayer.org/demos/scripting/grow.html)有一个onFinish函数,我应该采取的路线代替HTML5视频方法吗? IE用户获得Flash播放器的事实是否需要两个独立的解决方案?

任何投入将不胜感激 . 我目前正在网站上使用jQuery,所以我想尽可能地将解决方案保留在该领域 . 谢谢!

3 回答

  • 66

    有一个与视频标记关联的OnEnded事件 . 但是,它在当前版本的Google Chrome中对我不起作用 .

    HTML 5 Video OnEnded Event not Firing

    并且还看到

    Detect when an HTML5 video finishes

    对于通用解决方案(支持带有后备的视频标签,请参阅)

    http://camendesign.com/code/video_for_everybodyhttp://www.kaltura.org/project/HTML5_Video_Media_JavaScript_Libraryhttp://www.mediafront.org/

  • 3

    You can view a complete list of events in the spec here .

    例如:

    $("video").bind("ended", function() {
       alert("I'm done!");
    });
    

    您可以像jQuery中的任何其他内容一样绑定元素上的事件...至于您的评论问题,您为IE提供的任何元素,是的,它需要一个单独的处理程序,它可以操作它提供的任何事件 .

    对于有关时间码的其他问题, timeupdate 事件在播放时发生, durationchange 事件在整体持续时间发生变化时发生 . 您可以绑定并使用它们就像我在上面的 ended 事件中显示的一样 . 使用 timeupdate 你可能想要 currentTime 属性,使用 durationchange 你需要 duration 属性,你可以直接从DOM对象中获取每个属性,如下所示:

    $("video").bind("durationchange", function() {
       alert("Current duration is: " + this.duration);
    });
    
  • 1

    我用过这段代码 . 它基本上重新加载视频,将再次显示海报 . 假设您希望最后的图像与海报相同 . 我在页面上只有一个视频,因此使用视频标签可以正常工作 . 我的视频设置在页面加载时自动播放,所以我在重新加载后添加了暂停 .

    <script type="text/javascript">
        var video= $('video')[0]; 
        var videoJ= $('video');        
        videoJ.on('ended',function(){
            video.load();     
            video.pause();
        });
    </script>
    

相关问题