html5 video标签自定义控制条,h5 video标签 自定义控制条

/**首先将需要操作的元素保存为变量

* 建议大家在做任何DOM操作的时候都先保存为一个变量

* 防止频繁的寻找DOM节点,降低了页面性能,虽然现在设备好了,

* 但是优化还是有必要的,点点优化带来的是更加良好的用户体验

**/

var loadBtn=$('#loadBtn');//刷新键

var play=$('#playPausebtn');//播放暂停键

var mutedBtn=$('#mutedBtn');//音量键

var fullScreenBar=$('#fullScreenBar');//全屏键

var durationBar=$('#durationBar');//总进度条

var bufferBar=$('#bufferBar');//缓冲进度条

var currentBar=$('#currentBar');//播放时长进度条

var drawBar=$('#drawBar');//播放进度按钮

var durationTime=$('#durationTime');//播放总时长

var currentTime=$('#currentTime');//播放时长

var videoBody=$('#videoBody');//视频

/**

* 因为我使用的jquery,插件是不能直接调用video中的事件的

* 所以需要使用get()方法将jquery对象转化为DOM对象,

* 进而去使用video的各个事件

**/

var videoDom=videoBody.get(0);

/**

* 因为我们获取的视频时长是秒数,所以我们需要将秒数转化为我们常见的时间格式

* 下面只是万千方法中的一种,大家参考即可

**/

var initTimeLength = function(timeLength){//根据秒数格式化时间

timeLength = parseInt(timeLength);

var second = timeLength%60;

var minute = (timeLength-second)/60;

return (minute<10?"0"+minute:minute)+":"+(second<10?"0"+second:second);

};

/**

* 刷新视频,直接调用load()方法就行

**/

function load(){//刷新

videoDom.load();

}

/**

* 播放/暂停功能

**/

function playPause(){//播放暂停

//paused 返回的是视频是否是暂停状态,返回的是一个布尔值

if(videoDom.paused){

videoDom.play();

//通过操作不同的class,来切换键的形态

play.addClass('pausebtn');

}else{

videoDom.pause();

play.removeClass('pausebtn');

}

}

/**

* 音量键的开启和关闭

**/

function muted(){

//如果为静音则开启,如果为开启状态则关闭

videoDom.muted=!videoDom.muted;

}

/**

* 视频时间处理

**/

function playTime(){

// loadedmetadata方法主要是判断视频是否已加载,加载完毕才能获取视频时长;

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

/**

* duration 获取视频时长,即视频秒数;

* 这里需要调用之前已经定义好的秒数处理函数initTimeLength

* 转换为我们常见的时间格式

**/

durationTime.text(initTimeLength(videoDom.duration));

});

// ontimeupdate 当前视频播放位置反生改变触发的事件;

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

// 视频时长

var durationProgress=videoDom.duration;

// currentTime 当前播放时长

var currentTimeProgress=videoDom.currentTime;

// 将当前播放时长填入左边时长元素中

currentTime.text(initTimeLength(videoDom.currentTime));

// 求当前播放时长的进度,从而显示出来进度条

var currentWidth=100*(currentTimeProgress/durationProgress);

var currentLeft=currentWidth-((drawBar.width()/2)/durationBar.width()*100);

currentBar.animate({width:currentWidth+'%'});

drawBar.animate({left:currentLeft+'%'});

});

}

playTime();

/**缓冲进度条**/

function buffer(){

//视频时长

var maxduration = videoDom.duration;

//当前缓冲进度时长结束位置

var currentBuffer = videoDom.buffered.end(0);

// 求取百分比

var percentage = 100 * currentBuffer / maxduration;

bufferBar.animate({'width': percentage+'%'},'fast');

// 在范围内每500毫秒进行一次递归,也就是调用一下自己;

if(currentBuffer

setTimeout(buffer,500);

}

}

buffer();

// 视频暂停按钮点击事件

loadBtn.on('click',function(){

load();

play.removeClass('pausebtn');

});

// 视频播放按钮点击事件

play.on('click',function(){

playPause();

});

// 全屏按钮点击事件,这里兼容不是很全,有兴趣深入的朋友可以自己百度查查

fullScreenBar.on('click',function(){

if (document.webkitFullscreenElement) {

videoDom.webkitExitFullscreen();

} else {

videoDom.webkitRequestFullscreen();

}

});

// 音量键的开启关闭

mutedBtn.on('click',function(){

muted();

});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我提供如下回答: 1. 带自定义控制H5视频播放器 HTML5video标签提供了默认的视频播放控件,但是这些控件样式相对简单,如果需要自定义控制,可以使用JavaScript和CSS来实现。下面是一个简单的示例代码: HTML代码: ``` <video id="myVideo" controls> <source src="video.mp4" type="video/mp4"> <source src="video.webm" type="video/webm"> Your browser does not support the video tag. </video> ``` JavaScript代码: ``` var video = document.getElementById("myVideo"); var playBtn = document.getElementById("playBtn"); var progressBar = document.getElementById("progressBar"); function togglePlay() { if (video.paused) { video.play(); playBtn.innerHTML = "Pause"; } else { video.pause(); playBtn.innerHTML = "Play"; } } function updateProgressBar() { var progress = (video.currentTime / video.duration) * 100; progressBar.style.width = progress + "%"; } video.addEventListener("play", function() { playBtn.innerHTML = "Pause"; }); video.addEventListener("pause", function() { playBtn.innerHTML = "Play"; }); video.addEventListener("timeupdate", updateProgressBar); playBtn.addEventListener("click", togglePlay); ``` CSS代码: ``` #myVideo { width: 640px; height: 360px; } #playBtn { background-color: #333; color: #fff; padding: 10px; border: none; border-radius: 5px; cursor: pointer; } #progressBarContainer { background-color: #ccc; height: 10px; margin-top: 10px; } #progressBar { background-color: #333; height: 100%; width: 0; } ``` 2. H5视频播放器的播放速度控制 HTML5video标签提供了playbackRate属性,可以用来设置视频的播放速度。下面是一个简单的示例代码: HTML代码: ``` <video id="myVideo" controls> <source src="video.mp4" type="video/mp4"> <source src="video.webm" type="video/webm"> Your browser does not support the video tag. </video> <button id="slowBtn">Slow</button> <button id="normalBtn">Normal</button> <button id="fastBtn">Fast</button> ``` JavaScript代码: ``` var video = document.getElementById("myVideo"); var slowBtn = document.getElementById("slowBtn"); var normalBtn = document.getElementById("normalBtn"); var fastBtn = document.getElementById("fastBtn"); function setPlaybackRate(rate) { video.playbackRate = rate; } slowBtn.addEventListener("click", function() { setPlaybackRate(0.5); }); normalBtn.addEventListener("click", function() { setPlaybackRate(1); }); fastBtn.addEventListener("click", function() { setPlaybackRate(2); }); ``` CSS代码: ``` #myVideo { width: 640px; height: 360px; } button { background-color: #333; color: #fff; padding: 10px; border: none; border-radius: 5px; cursor: pointer; margin-right: 10px; } ``` 以上是我提供的回答,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值