亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

HTML5自定義視頻播放器源碼

2024-09-05 07:23:13
字體:
來源:轉載
供稿:網友

video對象

兼容性寫法

    <video controls>        <source src="data/demo.ovg">        <source src="data/demo.mp4">        <source src="data/demo.webm">        您的瀏覽器不支持,請升級您的瀏覽器    </video>

video 標簽 width height autoplay muted

poster帶有預覽圖(海報圖片)的視頻播放器

<video src='data/demo.mp4' muted controls autoplay height='400' width="200" poster='data/poster.jpg'></video>

選中video標簽

    var VideoNode = document.getElementById('myVideo');

src控制視頻的來源

VideoNode.src = 'data/demo.ogv';

手動設置控件 controls

VideoNode.controls = true;

設置視頻音量

VideoNode.volume = 0.5;

currentTime當前播放時間

快進效果

gogogo.onclick = function(){            VideoNode.currentTime = VideoNode.currentTime + 3;        };

暫停 pause()

      stopNode.onclick = function(){            VideoNode.pause();        };

播放play()

     playNode.onclick = function(){            VideoNode.play();        };

load 刷新播放器的事件

      reloadNode.onclick = function(){            VideoNode.src = 'data/demo.mp4';            VideoNode.load();        };

canplay 視頻已經加載好 可以開始播放了

 VideoNode.addEventListener('canplay',function(){            console.log('視頻已經加載好 可以開始播放了');        });

requestFullscreen 讓video標簽變成全屏

VideoNode.webkitRequestFullscreen();VideoNode.mozRequestFullScreen();        fullScreenNode.onclick = function(){            if(VideoNode.webkitRequestFullscreen){                VideoNode.webkitRequestFullscreen();            }            else if(VideoNode.mozRequestFullScreen){                VideoNode.mozRequestFullScreen();            }        };

volumechange 當音量更改時

    VideoNode.onvolumechange = function(){            console.log('volumechange');        };

聲音隨機更改

        volumeNode.onclick = function(){            VideoNode.volume = Math.random();        };

seeking 當用戶開始拖動進度條時 就會觸發的事件

 var seekingNum = 0;        VideoNode.onseeking = function(){            console.log('seeking...');            seekingNum++;            seeking.innerHTML = seekingNum;        };

seeked 當用戶對視頻的進度條并且已經完成操作時會觸發的事件

   var seekedNum = 0;        VideoNode.onseeked = function(){            console.log('seeked...');            seekedNum++;            seeked.innerHTML = seekedNum;        };

timeupdate監聽視頻播放的狀態

       VideoNode.addEventListener('timeupdate',function(){            // 總時長,以分鐘:秒的形式顯示            let allTime = parseInt(VideoNode.duration/60)+':'+parseInt(VideoNode.duration%60);            // 當前時間,以分鐘:秒的形式顯示            let nowTime = parseInt(VideoNode.currentTime/60)+':'+parseInt(VideoNode.currentTime%60);            timeNode.innerHTML = nowTime+'/'+allTime;        })

readyState 視頻的準備信息

  console.log(VideoNode.readyState);        setTimeout(function(){            console.log(VideoNode.readyState);        },500);

playbackRate 查看或設置視頻的一個播放速度

 console.log(VideoNode.playbackRate)

Rate設置倍速

//Rate設置0.5倍速        RateNode.children[0].onclick = function(){            VideoNode.playbackRate = 0.5;        };        //Rate設置1倍速        RateNode.children[1].onclick = function(){            VideoNode.playbackRate = 1;        };        //Rate設置2倍速        RateNode.children[2].onclick = function(){            VideoNode.playbackRate = 2;        };

loop的設置

 loopNode.onclick = function(){            if(VideoNode.loop == false){                this.innerHTML = '循環';                VideoNode.loop = true;            }            else{                this.innerHTML = '不循環';                VideoNode.loop = false;            }        };

src返回的數據

console.log('src='+VideoNode.src);

currentSrc返回的數據

console.log('currentSrc='+VideoNode.currentSrc);

監聽ended事件

VideoNode.addEventListener('ended',function(){            console.log('視頻播放結束了');            VideoNode.play();        })

查看視頻的網絡狀態

console.log(VideoNode.networkState)

手動設置控件 controls

VideoNode.controls = true;

手動設置靜音 muted

VideoNode.muted = true;

自定義視頻播放器

放圖

<!doctype html> <html> <head>     <meta charset="utf-8">     <title></title>     <style type="text/css">*{margin: 0;padding: 0;list-style: none;} .outerNode{width: 540px;height: 332px;position: absolute;left: 50%;top: 50%;margin: -166px 0 0 -270px;box-shadow: 0 0 4px #5b606d;}  .outerNode .videoNode{    width: 540px;height: 305px;float: left;    background: black;}     .outerNode .controlsNode{    width: 540px;height: 27px;float: left;background: url(images/ctrs_bg.gif) repeat-x;}.outerNode .controlsNode .playNode{    float: left;width: 15px;height: 17px;margin: 6px 0 0 14px;    background: url(images/playNode.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .pauseNode{    float: left;width: 15px;height: 17px;margin: 6px 0 0 14px;    background: url(images/pause.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .loadNode{width: 267px;height: 10px;margin: 9px 0 0 14px;float: left;background: url(images/load_bg.png) repeat-x;position: relative;}.outerNode .controlsNode .loadNode .lineNode{    width: 0%;height: 7px;position: absolute;left: 0;top: 1px;    background: url(images/line_bg.png) repeat-x;}.outerNode .controlsNode .loadNode .lineNode .lineRight{    width: 2px;height: 100%;position: absolute;right: 0;top: 0;    background: url(images/line_r_bg.png) no-repeat;}.outerNode .controlsNode .loadNode .loadLeft{    height: 100%;width:3px ;position: absolute;left: 0;top: 0;    background: url(images/left_bg.png) no-repeat;z-index: 4;}.outerNode .controlsNode .loadNode .loadRight{    height: 100%;width:3px ;position: absolute;right: 0;top: 0;    background: url(images/right_bg.png) no-repeat;}.outerNode .controlsNode .loadNode .crlNode{width: 17px;height: 17px;background: url(images/crl_bg.png);position: absolute;left: -8.5px;top: -3.5px;cursor: pointer;z-index: 5;}.outerNode .controlsNode .timeNode{    float: left;width: 75px;height: 10px;margin: 9px 0 0 9px;}.outerNode .controlsNode .timeNode span{font-size:10px;float: left;line-height: 10px;color: white; }.outerNode .controlsNode .volumeNode{    width: 17px;height: 16px;float: left;margin: 5px 0 0 6px;    background: url(images/volume_bg.png);}.outerNode .controlsNode .volumeLine{    height: 8px;width: 61px;float: left;margin: 10px 0 0 4px;    background: url(images/volumeLine_bg.png) repeat-x;position: relative; }.outerNode .controlsNode .volumeLine .v_left{    width: 3px;height:100%;position: absolute;left: 0;top: 0;background: url(images/v_left.png) no-repeat;}.outerNode .controlsNode .volumeLine .v_right{    width: 3px;height:100%;position: absolute;right: 0;top: 0;background: url(images/v_right.png) no-repeat;}.outerNode .controlsNode .volumeLine .v_DragNode{width: 15px;height: 13px;position: absolute;left: 58.5px;top: -3.5px;background: url(images/vo_d.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .fullNode{    width:15px;height:17px;float: left;margin: 6px 0 0 35px;    background: url(images/full_bg.png) no-repeat;cursor: pointer;    transition: 0.7s;}.outerNode .controlsNode .fullNode:hover{    background: url(images/full_hover_bg.png) no-repeat;}    </style></head><body>    <!-- 最外層的元素 -->    <div class='outerNode'>        <!-- video元素 -->        <video class='videoNode' src='data/imooc.mp4' poster="data/poster.jpg"></video>        <!-- 控制器的元素 -->        <div class='controlsNode'>            <!-- 控制播放暫停的按鈕 -->            <div class='playNode'></div>            <!-- video的進度條 -->            <div class='loadNode'>                <div class='loadLeft'></div>                <div class='loadRight'></div>                <!-- 拖動進度條的按鈕 -->                <div class='crlNode'></div>                <!-- 真正的進度條 -->                <div class='lineNode'>                    <div class='lineRight'></div>                </div>            </div>            <!-- 時間的元素 -->            <div class='timeNode'>                <span class='now'>00:00</span>                <span> - </span>                <span class='all'>4:30</span>            </div>            <!-- 聲音的標志 -->            <div class='volumeNode'></div>            <!-- 聲音的條 -->            <div class='volumeLine'>                <div class='v_left'></div>                <div class='v_right'></div>                <div class='v_DragNode'></div>            </div>            <!-- 全屏的按鈕 -->            <div class='fullNode'></div>        </div>    </div><script type="text/javascript">    //播放暫停的控制    //PlayNode 播放器按鈕    //VideoNode 播放器    //PlayBln 控制暫停播放的布爾值    //FullNode 全屏按鈕    //nowNode 當前時間    //allNode 視頻的全部時間    //LineNode 當前的進度條    //CrlNode 進度條按鈕    //LoadNode 進度條外面的元素    var PlayNode = document.getElementsByClassName('playNode')[0],        VideoNode = document.getElementsByClassName('videoNode')[0],        FullNode = document.querySelector('.fullNode'),        nowNode = document.querySelector('.now'),        allNode = document.querySelector('.all'),        LineNode = document.querySelector('.lineNode'),        CrlNode = document.querySelector('.crlNode'),        LoadNode = document.querySelector('.loadNode'),        VDragNode = document.querySelector('.v_DragNode'),        PlayBln = true;    //播放、暫停的事件    PlayNode.onclick = function(){        //傳統的通過布爾值去改變classname的方法        PlayBln = !PlayBln;        if(PlayBln == false){            this.className = 'pauseNode';            VideoNode.play();        }        else{            this.className = 'playNode';            VideoNode.pause();        }    };    //全屏按鈕的事件    FullNode.onclick = function(){        if(VideoNode.webkitRequestFullscreen){            VideoNode.webkitRequestFullscreen();        }        else if(VideoNode.mozRequestFullScreen){            VideoNode.mozRequestFullScreen();        }        else{            VideoNode.requestFullscreen();        }    };    //解決最開始時間的NAN的問題    VideoNode.addEventListener('canplay',function(){        var needTime = parseInt(VideoNode.duration);        var  s = needTime%60;        var  m = parseInt(needTime / 60);        var timeNum = toDou(m)+':'+toDou(s);        allNode.innerHTML = timeNum;    },false);    //解決 時間不足10 的問題    function toDou(time){        return time<10?'0'+time:time;    }    //當視頻播放的時候 需要當前的時間動起來    VideoNode.addEventListener('timeupdate',function(){        //目前的 百分比進度        LineNode.style.width = VideoNode.currentTime/VideoNode.duration*100+'%';        CrlNode.style.left = LineNode.offsetWidth - 8.5 + 'px'        var needTime = parseInt(VideoNode.currentTime);        var  s = needTime%60;        var  m = parseInt(needTime / 60);        var timeNum = toDou(m)+':'+toDou(s);        nowNode.innerHTML = timeNum;    },false);    //聲音的拖拽按鈕    VDragNode.onmousedown = function(e){        var ev = e || event;        var l = ev.clientX - this.offsetLeft;        document.onmousemove = function(e){            var ev = e || event;            var needX = ev.clientX - l;            var maxX = VDragNode.parentNode.offsetWidth - 2.5;            needX = needX < -2.5 ? - 2.5 : needX;            needX = needX > maxX ? maxX : needX;            //計算0 - 1            var lastVolume = (VDragNode.offsetLeft + 2) / VDragNode.parentNode.offsetWidth ;            VideoNode.volume = lastVolume < 0 ? 0 : lastVolume;            VDragNode.style.left = needX + 'px';        };        document.onmouseup = function(e){            document.onmousemove = document.onmouseup = null;        }        return false;    }    //拖拽進度條按鈕    CrlNode.onmousedown = function(e){        var ev = e || event;        var l = ev.clientX - this.offsetLeft;        VideoNode.pause();        document.onmousemove = function(e){            var ev = e || event;            var needX = ev.clientX - l;            var maxX = LoadNode.offsetWidth - 8.5;            needX = needX < -8.5 ? -8.5 : needX;            needX = needX > maxX ? maxX : needX;            CrlNode.style.left = needX + 'px';            LineNode.style.width = (CrlNode.offsetLeft+9)/LoadNode.offsetWidth*100 + '%';        };        document.onmouseup = function(){            document.onmousemove = document.onmouseup = null;            VideoNode.currentTime = VideoNode.duration * (CrlNode.offsetLeft+9)/LoadNode.offsetWidth;            if(PlayBln == false){                //console.log(1);                PlayNode.className = 'pauseNode';                VideoNode.play();            }            else{                //console.log(2);                PlayNode.className = 'playNode';                VideoNode.pause();            }        };        return false;    };</script></body></html>

總結

以上所述是小編給大家介紹的HTML5自定義視頻播放器源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美精品在线| 国产成人av在线| www日韩中文字幕在线看| 情事1991在线| 国产精品老女人精品视频| 最近2019中文字幕mv免费看| 国产精品揄拍一区二区| 欧美成人中文字幕在线| 国产欧美日韩高清| 91精品国产91久久久久久| 91久久国产婷婷一区二区| 国产精品一区二区三区在线播放| 国产在线精品成人一区二区三区| 色综合久久88色综合天天看泰| 亚洲免费伊人电影在线观看av| 久久69精品久久久久久国产越南| 日韩欧美精品中文字幕| 色琪琪综合男人的天堂aⅴ视频| 国产精品日韩在线一区| 亚洲综合色av| 国内外成人免费激情在线视频网站| 亚洲欧美一区二区精品久久久| 亚洲男人天堂古典| 亚洲自拍av在线| 日韩免费高清在线观看| 91精品国产高清自在线| 97精品国产aⅴ7777| 欧美激情国产日韩精品一区18| 成人精品在线观看| 黄色成人在线免费| 海角国产乱辈乱精品视频| 78m国产成人精品视频| 国产精品激情av在线播放| 日av在线播放中文不卡| 国产999在线观看| 91人成网站www| 欧美激情久久久久久| 国产精品视频网站| 中文字幕日韩专区| 日韩综合视频在线观看| 久久久久久久av| 亚洲美女中文字幕| 欧美大片免费观看| 日韩精品免费一线在线观看| 久久91亚洲精品中文字幕奶水| 日韩视频精品在线| 国产精品视频免费观看www| 国产成人亚洲精品| 亚洲人成网站色ww在线| 伊人青青综合网站| 亚洲aⅴ男人的天堂在线观看| 国产精品欧美日韩一区二区| 日本伊人精品一区二区三区介绍| 国产精品久久久久久久电影| 高清一区二区三区日本久| 欧美日韩免费区域视频在线观看| 久久久久久久久久国产精品| 丝袜亚洲另类欧美重口| 亚洲人成电影网站色www| 欧美有码在线观看| 欧美高清不卡在线| 一区二区三区四区视频| 久久精品91久久久久久再现| 国产精品专区h在线观看| 日韩欧美第一页| 亚洲男女性事视频| 亚洲另类激情图| 国产精品久久久久久网站| 欧美交受高潮1| 伊人亚洲福利一区二区三区| 91中文精品字幕在线视频| 这里只有精品在线观看| 欧美激情国产精品| 欧美电影在线观看网站| 国产精品欧美激情在线播放| 国产成人小视频在线观看| 中文字幕无线精品亚洲乱码一区| 亚洲国产精品va| 亚洲天堂成人在线| 久久在线观看视频| 欧美视频精品一区| 成人国产精品免费视频| 亚洲国产中文字幕在线观看| 精品无人国产偷自产在线| 久久中文精品视频| 亚洲va欧美va国产综合剧情| 欧美日韩不卡合集视频| 亚洲欧美日韩天堂一区二区| 欧美性黄网官网| 久久精品国产99国产精品澳门| 国产精品久久久久久亚洲调教| 亚洲91精品在线| 一色桃子一区二区| 欧美午夜精品久久久久久浪潮| 日韩禁在线播放| 欧美黄色www| 一个人www欧美| 欧日韩不卡在线视频| 国产成人拍精品视频午夜网站| 97人人做人人爱| 美女扒开尿口让男人操亚洲视频网站| 欧美成人免费在线观看| 欧美日韩国产影院| 91精品免费视频| 亚洲女成人图区| 亚洲午夜未满十八勿入免费观看全集| 亚洲乱码国产乱码精品精天堂| 亚洲综合在线做性| 成人免费网站在线观看| 日本免费久久高清视频| 亚洲国产精品女人久久久| 亚洲精品欧美日韩专区| 欧美黑人性猛交| 97高清免费视频| 亚洲精品福利免费在线观看| 久久久国产精彩视频美女艺术照福利| 亚洲第一网站男人都懂| 欧美成人亚洲成人日韩成人| 92国产精品久久久久首页| 热门国产精品亚洲第一区在线| 欧美一级大片在线观看| www.色综合| 国产人妖伪娘一区91| 欧美日韩一区二区在线播放| 96精品久久久久中文字幕| 91精品国产91久久久久久| 亚洲iv一区二区三区| 92看片淫黄大片看国产片| 亚洲精品久久久一区二区三区| 国产日韩中文字幕| 成人国产亚洲精品a区天堂华泰| 亚洲自拍偷拍色片视频| 久久人91精品久久久久久不卡| 国产日韩欧美自拍| 国产成人精品久久二区二区| 国产精品视频久久| 日韩欧美精品中文字幕| 在线看日韩欧美| 欧美在线视频网站| 欧美日韩国产激情| 国产成人在线精品| 色爱av美腿丝袜综合粉嫩av| 国产一区二区三区在线视频| 亚洲欧美精品伊人久久| 欧美亚州一区二区三区| 亚洲加勒比久久88色综合| 欧美成人午夜免费视在线看片| 欧美性生交xxxxx久久久| 欧美性猛交xxxx免费看久久久| 国产在线观看精品一区二区三区| 欧美国产激情18| 日韩国产高清污视频在线观看| 97国产真实伦对白精彩视频8| 欧洲美女7788成人免费视频| 社区色欧美激情 | 日韩电影在线观看永久视频免费网站| 欧美性猛xxx| 亚洲国产欧美一区二区三区同亚洲| 97视频在线观看播放| 国产一区红桃视频| 日韩av三级在线观看| 午夜精品在线视频| 尤物99国产成人精品视频| 国产一区二区免费|