欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HTML5 Video player jQuery plugin

程序员文章站 2024-01-14 08:04:34
player.css player.js ......
<!doctype html>
<html lang="en" >
    <head>
        <meta charset="utf-8" />
        <title>html5 video player jquery plugin | script tutorials</title>    
        <link href="css/player.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
         <script type="text/javascript" src="js/jquery-ui-1.8.16/ui/jquery-ui.js"></script>
        <script src="js/player.js"></script>
    </head>
    <body>
        <header>
            <h2>html5 video player jquery plugin</h2>
            <a href="http://www.script-tutorials.com/html5-video-player-jquery-plugin/" class="stuts">back to original tutorial on <span>script tutorials</span></a>
        </header>
        <div class="container">

            <div class="video_player">
                <video controls="controls" poster="media/poster.jpg" style="width:420px; height:300px;">
                    <source src="media/video.ogg" type="video/ogg" />
                    <source src="media/video.mp4" type="video/mp4" />
                    <source src="media/video.webm" type="video/webm" />
                </video>
                <div class="custom_controls">
                    <a class="play" title="play"></a>
                    <a class="pause" title="pause"></a>
                    <div class="time_slider"></div>
                    <div class="timer">00:00</div>
                    <div class="volume">
                        <div class="volume_slider"></div>
                        <a class="mute" title="mute"></a>
                        <a class="unmute" title="unmute"></a>
                    </div>
                </div>
            </div>
            <script>
                $(function() {
                    $('.video_player').myplayer();
                });
            </script>

        </div>
    </body>
</html>

  player.css

/* jquery */
*{
    margin:0;
    padding:0;
}

.container {
    color: #000;
    margin: 2px auto;
    position: relative;
    width: 420px;
}
#slideshow {
    border:1px #000 solid;
    box-shadow:4px 6px 6px #444444;
    display:block;
    margin:0 auto;
    height:300px;
    width:420px;
}
.container .slides {
    display:none;
}


.ui-slider-handle {
    display: block;
    margin-left: -9px;
    position: absolute;
    z-index: 2;
}
.ui-slider-range {
    bottom: 0;
    display: block;
    height: 100%;
    left: 0;
    position: absolute;
    width: 100%;
    z-index: 1;
}

/* player */
.video_player {
    background-color: #e8e8e8;
    border: 1px solid #888;
    float: left;
    padding: 10px;

    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
}

/* controls */
.video_player .custom_controls {
    clear: both;
    height: 30px;
    padding-top: 5px;
    position: relative;
    width: 100%;
}
.play, .pause, .volume, .time_slider, .timer {
    float: left;
}
.play, .pause, .mute, .unmute {
    cursor: pointer;
}
.play, .pause {
    display: block;
    height: 24px;
    margin-left: 5px;
    margin-right: 15px;
    opacity: 0.8;
    width: 33px;

    transition: all 0.2s ease-in-out; 
    -moz-transition: all 0.2s ease-in-out;
    -webkit-transition: all 0.2s ease-in-out;
    -o-transition: all 0.2s ease-in-out;
}
.play {
    background: url(../images/play.png) no-repeat;
}
.pause {
    background: url(../images/pause.png) no-repeat;
    display: none;
}
.play:hover, .pause:hover {
    opacity: 1;
}
.time_slider {
    border: 1px solid #5f5f5f;
    height: 10px;
    margin-top: 5px;
    position: relative;
    width: 420px;

    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;

    background: #777777;
    background-image: -moz-linear-gradient(top, #777777, #9d9d9d);
    background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #777777),color-stop(1, #9d9d9d));
}
.time_slider .ui-slider-handle {
    background: url(../images/handler.png) no-repeat;
    cursor: pointer;
    height: 16px;
    opacity: 0.8;
    top: -2px;
    width: 16px;
}
.time_slider .ui-slider-handle.ui-state-hover {
    opacity: 1;
}
.time_slider .ui-slider-range {
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;

    background: #e9742e;
    background-image: -moz-linear-gradient(top, #e9742e, #c14901);
    background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e9742e),color-stop(1, #c14901));
}
.timer {
    color: #000;
    font-size: 12px;
    margin-left: 10px;
    margin-top: 3px;
}
.volume {
    bottom: 0;
    color: #ffffff;
    height: 35px;
    overflow: hidden;
    padding: 5px 10px 0;
    position: absolute;
    right: 0;
    width: 33px;
}
.volume:hover {
    background: url(../images/volume.png) no-repeat scroll 8px 0 transparent;
    height: 161px;
}
.volume_slider {
    height: 105px;
    left: -1px;
    opacity: 0;
    position: relative;
    width: 33px;
}
.volume:hover .volume_slider {
    opacity: 1;
}
.volume_slider .ui-slider-handle {
    background: url(../images/handler.png) no-repeat;
    height: 15px;
    left: 9px;
    margin-bottom: -15px;
    margin-left: 0;
    opacity: 0.8;
    width: 14px;
}
.volume_slider .ui-slider-handle.ui-state-hover {
    opacity: 1;
}
.mute, .unmute {
    bottom: 7px;
    display: block;
    height: 23px;
    opacity: 0.8;
    position: absolute;
    text-indent: -999px;
    width: 33px;
}
.mute:hover, .unmute:hover {
    opacity: 1;
}
.mute {
    background: url(../images/vol_full.png) no-repeat;
}
.unmute {
    background: url(../images/vol_mute.png) no-repeat;
    display: none;
}

  

 

 

player.js

function rectime(secs) {
    var hr = math.floor(secs / 3600);
    var min = math.floor((secs - (hr * 3600))/60);
    var sec = math.floor(secs - (hr * 3600) - (min * 60));

    if (hr < 10) {hr = '0' + hr; }
    if (min < 10) {min = '0' + min;}
    if (sec < 10) {sec = '0' + sec;}
    if (hr) {hr = '00';}
    return hr + ':' + min + ':' + sec;
}

(function($) {
    $.fn.myplayer = function() {
        return this.each(function() {
            // variables
            var $omain = $(this);
            var $ovideo = $('video', $omain);
            var $oplay = $('.play', $omain);
            var $opause = $('.pause', $omain);
            var $otimeslider = $('.time_slider', $omain);
            var $otimer = $('.timer', $omain);
            var $ovolslider = $('.volume_slider', $omain);
            var $omute = $('.mute', $omain);
            var $ounmute = $('.unmute', $omain);
            var btimeslide = false;
            var ivolume = 1;

            // functions section
            var preparetimeslider = function() {
                if (! $ovideo[0].readystate) {
                    settimeout(preparetimeslider, 1000);
                } else {
                    $otimeslider.slider({
                        value: 0,
                        step: 0.01,
                        orientation: 'horizontal',
                        range: 'min',
                        max: $ovideo[0].duration,
                        animate: true,
                        slide: function() {
                            btimeslide = true;
                        },
                        stop:function(e, ui) {
                            btimeslide = false;
                            $ovideo[0].currenttime = ui.value;
                        }
                    });
                };
            };

            // events section
            $oplay.click(function () {  
                $ovideo[0].play();
                $oplay.hide();
                $opause.css('display', 'block');
            });
            $opause.click(function () {  
                $ovideo[0].pause();
                $opause.hide();
                $oplay.css('display', 'block');
            });
            $omute.click(function () {  
                $ovideo[0].muted = true;
                $ovolslider.slider('value', '0');
                $omute.hide();
                $ounmute.css('display', 'block');
            });
            $ounmute.click(function () {  
                $ovideo[0].muted = false;
                $ovolslider.slider('value', ivolume);
                $ounmute.hide();
                $omute.css('display', 'block');
            });

            // bind extra inner events
            $ovideo.bind('ended', function() {
                $ovideo[0].pause();
                $opause.hide();
                $oplay.css('display', 'block');
            });
            $ovideo.bind('timeupdate', function() {
                var inow = $ovideo[0].currenttime;
                $otimer.text(rectime(inow));
                if (! btimeslide)
                    $otimeslider.slider('value', inow);
            });

            // rest initialization
            $ovolslider.slider({
                value: 1,
                orientation: 'vertical',
                range: 'min',
                max: 1,
                step: 0.02,
                animate: true,
                slide: function(e, ui) {
                    $ovideo[0].muted = false;
                    ivolume = ui.value;
                    $ovideo[0].volume = ui.value;
                }
            });
            preparetimeslider();
            $ovideo.removeattr('controls');
        });
    };
})(jquery);