video-bak

<!-- <video id="video_paly" width="600" height="400" controls src="http://vjs.zencdn.net/v/oceans.mp4" preload poster="https://ossweb-img.qq.com/images/lol/web201310/skin/big91012.jpg">

您的浏览器不支持 video 标签。

</video>

<button id="button1">进入画中画</button>

<button id="button2">退出画中画</button>

<script type="text/javascript">

var video = document.getElementById("video_paly");

var btn1 = document.getElementById("button1");

var btn2 = document.getElementById("button2");

btn1.onclick = function(){

video.requestPictureInPicture();

}

btn2.onclick = function(){

document.exitPictureInPicture();

}

video.addEventListener('enterpictureinpicture', function() {

console.log("已经进入画中画")

});

video.addEventListener('leavepictureinpicture', function() {

console.log("已退出画中画模式")

});

</script> -->

使用jQuery和CSS自定义HTML5 Video 控件 简单适用

Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持.包括IE9,也是如此.不同的浏览器提供了不同的原生态浏览器视频空间.我们制作自定义视频控件为了在所有的浏览器中有一个相同的Html5视频控件而不受默认视频控件的控制.

 HTML5 Video 基础标签

<video id="myVideo" controls poster="video.jpg" width="600" height="400" >

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

<source src="video.webm" type="video/webM" />

<source src="video.ogv" type="video/ogg" />

<p>Your browser does not support the video tag.</p>

</video>

video标签最好包含mp4、webM和ogg这三种源视频文件-可以跨浏览器。如果浏览器不支持html5,你可以使用flash作为后备!  

 开始制作 HTML5 Video Controls

  幸运的是HTML5 Video 的Api可以用JavaScript访问,并使用他们来作为控制视频的媒介.

  在编码之前让我简单的介绍一下jQuery是如何获取video标签的.

  在JavaScript中我们使用getElementById('videoID')来获取Video标签,作为结果,我们会获取到一个Dom对象.但是这不是等价的jQuery对象.$("videoID")会返回一个jQuery对象.不是Dom对象.这就是为什么在将其转换为Dom对象之前我们不能直接使用jQuery选择器调用/使用Html5 Video的Dom属性和功能. 

//return a DOM object

var video = document.getElementById('videoID'); //or

var video = $('#videoID').get(0); //or

var video = $('#videoID')[0];

//return a jQuery object

var video = $('#videoID');

Video Play/Pause Controls 播放/暂停 按钮

  好的,这是所有的介绍.现在让我们来编码.首先,我们要创建一个简单的播放/暂停按钮. 

<div class="control">

<a href="#" class="btnPlay">Play/Pause</a>

</div>

我们可以轻松的控制Html5 Video的播放与暂停状态.

//Play/Pause control clicked

$('.btnPlay').on('click', function() {

if(video[0].paused) {

video[0].play();

}

else {

video[0].pause();

}

return false;

};

显示视频播放时间和持续时间

  Html5 Video支持视频回放.这里我们要显示视频的当前播放时间和总时间.

<div class="progressTime">

Current play time: <span class="current"></span>

Video duration: <span class="duration"></span>

</div>

为了得到视频的总时间,我们要确保视频元数据已经加载.这个时候我们要用到Html5 Video的loadedmetadata事件.

  对于当前的视频播放时间.我们可以用Html5 Video timeupdate事件来保证他的更新.

//get HTML5 video time duration

video.on('loadedmetadata', function() {

$('.duration').text(video[0].duration);

});

//update HTML5 video current play time

video.on('timeupdate', function() {

$('.current').text(video[0].currentTime);

});

视频进度条

  在这里我们将会把当前播放时间和总的时间长度转换为更人性化的进度条.

<style>

.progressBar

{

position: relative;

100%;

height: height:10px;

backgroud-color: #000;

}

.timeBar

{

position: absolute;

top: 0;

left: 0;

0;

height: 100%;

background-color: #ccc;

}

</style>

<div class="progressBar">

<div class="timeBar"></div>

</div>

//get HTML5 video time duration

video.on('loadedmetadata', function() {

$('.duration').text(video[0].duration));

});

//update HTML5 video current play time

video.on('timeupdate', function() {

var currentPos = video[0].currentTime; //Get currenttime

var maxduration = video[0].duration; //Get video duration

var percentage = 100 * currentPos / maxduration; //in %

$('.timeBar').css('width', percentage+'%');

});

var timeDrag = false; /* Drag status */

$('.progressBar').mousedown(function(e) {

timeDrag = true;

updatebar(e.pageX);

});

$(document).mouseup(function(e) {

if(timeDrag) {

timeDrag = false;

updatebar(e.pageX);

}

});

$(document).mousemove(function(e) {

if(timeDrag) {

updatebar(e.pageX);

}

});

//update Progress Bar control

var updatebar = function(x) {

var progress = $('.progressBar');

var maxduration = video[0].duration; //Video duraiton

var position = x - progress.offset().left; //Click pos

var percentage = 100 * position / progress.width();

//Check within range

if(percentage > 100) {

percentage = 100;

}

if(percentage < 0) {

percentage = 0;

}

//Update progress bar and video currenttime

$('.timeBar').css('width', percentage+'%');

video[0].currentTime = maxduration * percentage / 100;

};

完成!

 进阶-显示缓冲栏

  我们需要给视频制作一个缓冲栏让用户知道视频加载了多少.

<style>

.progressBar {

position: relative;

100%;

height: height:10px;

backgroud-color: #000;

}

.bufferBar {

position: absolute;

top: 0;

left: 0;

0;

height: 100%;

background-color: #ccc;

}

</style>

<div class="progressBar">

<div class="bufferBar"></div>

</div>

Html5 Video缓冲属性将返回一个对象的缓存范围.因此,我们将使用缓存数据的最后一个值.

//loop to get HTML5 video buffered data

var startBuffer = function() {

var maxduration = video[0].duration;

var currentBuffer = video[0].buffered.end(0);

var percentage = 100 * currentBuffer / maxduration;

$('.bufferBar').css('width', percentage+'%');

if(currentBuffer < maxduration) {

setTimeout(startBuffer, 500);

}

};

setTimeout(startBuffer, 500);

音量控制

  现在,我们要增加声音控制.有两种不同的音量控制方法.静音按钮/音量栏

<a href="#" class="muted" >Mute/Unmute</a>

<div class="volumeBar">

<div class="volume"></div>

</div>

js

//Mute/Unmute control clicked

$('.muted').click(function() {

video[0].muted = !video[0].muted;

return false;

});

//Volume control clicked

$('.volumeBar').on('mousedown', function(e) {

var position = e.pageX - volume.offset().left;

var percentage = 100 * position / volume.width();

$('.volumeBar').css('width', percentage+'%');

video[0].volume = percentage / 100;

});

其他

  除了主要的控制插件.还可以做一些额外的控制.例如全屏播放

$('.fullscreen').on('click', function() {

//For Webkit

video[0].webkitEnterFullscreen();

//For Firefox

video[0].mozRequestFullScreen();

return false;

});

开灯关灯控制

$('.btnLight').click(function() {

if($(this).hasClass('on')) {

$(this).removeClass('on');

$('body').append('<div class="overlay"></div>');

$('.overlay').css({

'position':'absolute',

'width':100+'%',

'height':$(document).height(),

'background':'#000',

'opacity':0.9,

'top':0,

'left':0,

'z-index':999

});

$('#myVideo').css({

'z-index':1000

});

}

else {

$(this).addClass('on');

$('.overlay').remove();

}

return false;

});


 

http://t.zoukankan.com/haonanZhang-p-6477109.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值