天天看点

HTML5 Video DOM 入门体验

HTML5的一个新特性就是内置对多媒体的支持,<video> 元素很好用,也支持了不错的API接口,下面用了一个案例来说明怎么对<video> 元素的控制。

<!DOCTYPE > 

<html> 

<head> 

    <title></title> 

    <script src="js/jquery-1.7.1.min.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

        $(  

        function() {  

            $(":button").click(  

            function() {  

                var h;  

                switch ($(":button").index($(this))) {  

                    case 0:  

                        if ($("video")[0].paused) {  

                            $("video")[0].play();  

                            $(this).val("暂停");  

                        }  

                        else {  

                            $("video")[0].pause();  

                            $(this).val("播放");  

                        break;  

                    case 1:  

                        h = document.getElementsByTagName("video")[0].height == 0 ?  

                            document.getElementsByTagName("video")[0].videoHeight - 10 :  

                            document.getElementsByTagName("video")[0].height - 10; ;  

                        document.getElementsByTagName("video")[0].height = h;  

                        document.getElementsByTagName("video")[0].videoHeight = h;  

                    case 2:  

                            document.getElementsByTagName("video")[0].videoHeight + 10 :  

                            document.getElementsByTagName("video")[0].height + 10; ;  

                }  

            }  

            );  

        }  

        );  

            $("#video1").on(  

            "canplay",  

            function(e) {  

                $(":button").removeAttr("disabled");  

                console.log(e);  

            "canplaythrough",  

                $("ol>li:eq(0)").html("全部加载完毕,你可以断网看电影了!");  

            $("#video1").bind(  

            "playing waiting ended play pause",  

                var vObj = document.getElementById("video1");  

                $("ol>li:eq(1)").html(vObj.duration + ":" + vObj.startTime + ":" + vObj.currentTime);  

            "stalled",  

                $("ol>li:eq(2)").html("你的网络不给力啊,正在等数据呢");  

            "error",  

                switch (e.target.error.code) {  

                    case e.target.error.MEDIA_ERR_ABORTED:  

                        $("ol>li:eq(3)").html("媒体资源获取异常");  

                    case e.target.error.MEDIA_ERR_NETWORK:  

                        $("ol>li:eq(3)").html("网络错误");  

                    case e.target.error.MEDIA_ERR_DECODE:  

                        $("ol>li:eq(3)").html("媒体解码错误");  

                    case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:  

                        $("ol>li:eq(3)").html("视频格式被不支持");  

                    default:  

                        $("ol>li:eq(3)").html("这个是神马错误啊");  

            "suspend abort progress",  

            "progress error abort",  

                switch (e.target.readyState) {  

                        $("ol>li:eq(3)").html("当前播放位置无有效媒介资源");  

                        $("ol>li:eq(3)").html("加载中,媒介资源确认存在,但当前位置没有能够加载到有效媒介数据进行播放");  

                        $("ol>li:eq(3)").html("已获取到当前播放数据,但没有足够的数据进行播放");  

                    case 3:  

                        $("ol>li:eq(3)").html("已获取到后续播放数据,可以进行播放");  

                    case 4:  

                        $("ol>li:eq(3)").html("可以进行播放,且浏览器确认媒体数据以某一种速度进行加载,可以保证有足够的后续数据进行播放,而不会使浏览器的播放进度赶上加载数据的末端");  

    </script> 

</head> 

<body> 

    <video id="video1" autobuffer> 

    <source src="video-test.mp4" type="video/mp4" /> 

    对不起你的浏览器不支持HTML5的新特性,要不你下载一个  

    <a href="http://info.msn.com.cn/ie9/">IE9</a>?   

  </video> 

    <input type="button" value="播放" disabled /> 

    <input type="button" value="缩小" disabled /> 

    <input type="button" value="放大" disabled /> 

    <ol> 

        <li></li> 

    </ol> 

</body> 

</html> 

对 Video的控制重要的方法就是play、paused、stop。重要的事件有:

canplay 通知用户可以播放了,但不一定资源全部下载好

canplaythrough 资源都下载完毕了

error 出错时候

事件参数中有一个target对象,他有一个readyState值,可以得到不同的状态信息。具体的值,可以通过开发者工具获得,或看相关文档。

本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806941

继续阅读