婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5自定義視頻播放器源碼

HTML5自定義視頻播放器源碼

熱門標簽:高德地圖標注商戶怎么標 欣鼎電銷機器人 效果 ok電銷機器人 智能電銷機器人被禁用了么 如何查看地圖標注 電話機器人技術 惡搞電話機器人 黃石ai電銷機器人呼叫中心 地圖標注軟件打印出來

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自定義視頻播放器源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

標簽:聊城 盤錦 綏化 赤峰 阿壩 金昌 萍鄉 中山

巨人網絡通訊聲明:本文標題《HTML5自定義視頻播放器源碼》,本文關鍵詞  HTML5,自定義,視頻,播放器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5自定義視頻播放器源碼》相關的同類信息!
  • 本頁收集關于HTML5自定義視頻播放器源碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一二三区精品福利视频| 一区二区三区在线播放| 日本一区二区电影| 秋霞影院一区二区| 欧美精品v日韩精品v韩国精品v| 亚洲视频你懂的| 97精品久久久午夜一区二区三区 | 亚洲精品午夜久久久| 99久久99久久精品国产片果冻| 欧美激情一区二区| 在线看一区二区| 日韩国产精品久久久久久亚洲| 4438x成人网最大色成网站| 日产欧产美韩系列久久99| 欧美一二三四区在线| 国产一区二区三区av电影| 国产精品欧美极品| 欧美日韩精品欧美日韩精品一 | 一本久久a久久精品亚洲| 亚洲午夜成aⅴ人片| 精品久久久久久无| av在线这里只有精品| 石原莉奈在线亚洲三区| 精品av久久707| 色琪琪一区二区三区亚洲区| 奇米精品一区二区三区在线观看| xvideos.蜜桃一区二区| 97se亚洲国产综合在线| 婷婷国产v国产偷v亚洲高清| 国产日韩欧美精品一区| 欧美日韩精品一区二区| 成人免费视频国产在线观看| 婷婷成人综合网| 国产精品美女久久久久久久久久久| 在线免费观看一区| 国模冰冰炮一区二区| 一区二区成人在线| 中文字幕国产精品一区二区| 日韩欧美一区二区视频| 91女人视频在线观看| 国产在线精品一区二区夜色 | 亚洲在线视频免费观看| 久久亚洲一区二区三区明星换脸| 日本大香伊一区二区三区| 国产成人精品影视| 日本怡春院一区二区| 亚洲综合激情网| 国产欧美日韩亚州综合 | 精品一区二区三区在线视频| 亚洲一区二区免费视频| 中文字幕亚洲不卡| 久久蜜桃av一区二区天堂| 欧美精品黑人性xxxx| 色丁香久综合在线久综合在线观看| 国产一区二区三区视频在线播放| 日韩在线观看一区二区| 亚洲电影视频在线| 亚洲蜜桃精久久久久久久| 久久久亚洲精品一区二区三区 | 色综合欧美在线视频区| 成人免费视频一区| 成熟亚洲日本毛茸茸凸凹| 国产一区999| 国产激情偷乱视频一区二区三区| 国产又黄又大久久| 国产激情视频一区二区三区欧美| 国产成人午夜电影网| 国产成人aaa| 成人一区二区三区中文字幕| 国产精品乡下勾搭老头1| 国产一区999| 成人白浆超碰人人人人| 不卡的看片网站| 色屁屁一区二区| 欧美精品vⅰdeose4hd| 日韩亚洲国产中文字幕欧美| 精品少妇一区二区三区日产乱码 | 精品国产123| 国产日韩欧美精品一区| 亚洲色图制服诱惑 | 国产精品污污网站在线观看| 国产欧美日韩久久| 亚洲日穴在线视频| 亚洲国产综合色| 日韩高清国产一区在线| 国模无码大尺度一区二区三区| 国产精品1区二区.| 99re免费视频精品全部| 欧美在线免费观看亚洲| 欧美一级理论性理论a| 精品欧美乱码久久久久久1区2区 | 日韩伦理免费电影| 香港成人在线视频| 国产麻豆视频精品| 日本高清免费不卡视频| 日韩欧美一区二区三区在线| 国产精品乱人伦| 日韩精品福利网| 成人精品高清在线| 欧美福利电影网| 日本一区二区三区视频视频| 亚洲午夜一区二区| 激情文学综合插| 91激情五月电影| 亚洲精品一区二区精华| 一区二区免费视频| 国产精品久久久久久久久免费樱桃 | 日韩在线a电影| 欧美不卡在线视频| 亚洲视频 欧洲视频| 久久99深爱久久99精品| 91片在线免费观看| 久久影院视频免费| 亚洲综合偷拍欧美一区色| 久久精品国产久精国产爱| 色婷婷精品久久二区二区蜜臂av | 日韩精品久久久久久| 不卡电影一区二区三区| 久久这里只有精品6| 亚洲一二三四久久| 成人激情免费电影网址| 精品国产91亚洲一区二区三区婷婷| 亚洲国产日韩在线一区模特 | 久久久久97国产精华液好用吗| 亚洲成人动漫av| 99国产精品久久久久久久久久| 久久中文字幕电影| 久久99国产精品免费| 欧美精品一二三| 亚洲综合视频网| 91色九色蝌蚪| 中文字幕视频一区| av电影一区二区| 亚洲欧美在线高清| 91视频在线观看免费| 亚洲欧洲无码一区二区三区| 成人h动漫精品一区二区| 国产区在线观看成人精品 | 91视频精品在这里| 亚洲欧美一区二区不卡| 国产精品888| 国产日本一区二区| 大胆亚洲人体视频| 亚洲天堂成人网| 日本道免费精品一区二区三区| 一区二区三区视频在线看| 欧美亚洲日本国产| 婷婷久久综合九色综合绿巨人| 欧美精选午夜久久久乱码6080| 性做久久久久久| 91麻豆精品国产| 久久超碰97人人做人人爱| 日韩免费视频一区| 国产精品夜夜嗨| 综合精品久久久| 欧美少妇xxx| 日韩高清一区二区| 日韩三级视频中文字幕| 国产精品一区专区| 中文字幕在线一区免费| 欧美偷拍一区二区| 精品在线观看视频| 国产精品福利一区| 欧美欧美欧美欧美首页| 久久99国产乱子伦精品免费| 中文字幕二三区不卡| 色域天天综合网| 伦理电影国产精品| 国产精品剧情在线亚洲| 欧美这里有精品| 精品无人码麻豆乱码1区2区| 亚洲日本欧美天堂| 91精品国产综合久久精品图片| 久久精品国产99国产| 中文字幕免费不卡| 91精品国产色综合久久久蜜香臀| 国产成人av电影在线观看| 亚洲狠狠爱一区二区三区| 久久精品人人爽人人爽| 欧美午夜不卡视频| 成人免费高清视频在线观看| 亚洲.国产.中文慕字在线| 国产农村妇女毛片精品久久麻豆| 欧美视频一区二区三区四区| 国产成人午夜片在线观看高清观看| 亚洲电影中文字幕在线观看| 欧美国产精品v| 欧美一区二区啪啪| 99精品视频在线观看免费| 蜜桃av一区二区三区电影| 亚洲乱码国产乱码精品精98午夜| 精品日韩一区二区| 欧美精品 日韩| 色婷婷国产精品综合在线观看| 国产成人无遮挡在线视频| 精品夜夜嗨av一区二区三区| 图片区日韩欧美亚洲| 亚洲免费观看视频| 中文字幕一区二区三区av| 欧美激情综合五月色丁香小说|