使用html5 video定制视频
来源:互联网 发布:godaddy域名优惠 编辑:程序博客网 时间:2024/06/05 20:59
今天看了一下html5的video标签,还有它的属性事件方法等,就想自己定制一个视频播放器,练练手。
思路:
1、首先使用video标签,不使用默认的controls
<video width="640" height="267" id="myVideo"> <source src="cars.mp4" type="video/mp4" /> <source src="movie.ogg" type="video/ogg" /> <p>Your browser does not support the video tag</p> </video>
2、定制视频的播放暂停,使用play()、pause()
function playPause(video, videoPlayBtnId){if(video.paused){if(videoPlayBtnId) $("#"+videoPlayBtnId).hide();$("#playPauseBtn").addClass("pause_b");video.play();}else{if(videoPlayBtnId) $("#"+videoPlayBtnId).show();$("#playPauseBtn").removeClass("pause_b");video.pause();}} $("#myVideo,#playBtn,#playPauseBtn").bind("click", function(){ playPause(myVideo, "playBtn"); return false;});
3、进度条:
使用loadedmetadata事件,使用duration属性获取视频总长,使用timeupdate事件来更新进度,获取视频的currentTime
<div class="progress_bar"> <span class="time_bar"></span> <span class="cur_positon" id="progressDrag"></span> </div> function updatebar(x,video) { //更新进度 var progress = $('.progress_bar'); var maxduration = video.duration; var position = x - progress.offset().left; var videoWidth = $(video).width(); var currentPosition = $("#progressDrag").width(); var percentage = 100 * position/videoWidth; //检查拖动进度条的范围是否合法 if(percentage > 100) { percentage = 100; } if(percentage < 0) { percentage = 0; } //Update progress bar and video currenttime $('.time_bar').css('width', percentage+'%'); $('.cur_positon').css('left', videoWidth*percentage/100-(currentPosition/2)); video.currentTime = maxduration * percentage / 100; };
我们还要让进度条能够拖动,我们可以监听mousedown,mouseup和mousemove这几个事件完成相关的功能
var timeDrag = false; /*初始默认的拖动状态为false*/ $('#progressDrag').mousedown(function(e) { timeDrag = true; updatebar(e.pageX, myVideo); }); $("#videoBox").mouseup(function(e) { if(timeDrag) { timeDrag = false; //停止拖动,设置timeDrag为false updatebar(e.pageX, myVideo); } }); $("#videoBox").mousemove(function(e) { if(timeDrag) { updatebar(e.pageX, myVideo); } });$(".progress_bar").bind("click", function(e){timeDrag = true; updatebar(e.pageX, myVideo);timeDrag = false;});
4、音量,主要是使用volumechange事件和属性volume,以及mousedown,mouseup和mousemove这几个事件实现拖动
<div class="volume_box"> <span class="volume_icon"></span> <div class="volume_bar"> <span></span> </div> </div>单击喇叭静音,再次单击时给个默认的声音
$(".volume_icon").bind("click", function(){var volumeBarPos = $(".volume_bar").offset().left;if($(this).hasClass("un_volume")){updateVolumeBar(volumeBarPos + $(".volume_bar").width()*0.2, myVideo);}else{updateVolumeBar(volumeBarPos, myVideo);}});//更新声音进度function updateVolumeBar(x, video){var volume = $(".volume_bar");var borderRadius = 2;//2为边框圆角var position = x - volume.offset().left; var volumeWidth = volume.width()-borderRadius;var percentage = 100 * position/volumeWidth; //检查拖动进度条的范围是否合法 if(percentage > 100) { percentage = 100; } if(percentage < 0) { percentage = 0; video.muted = true; }video.volume = percentage/100;volume.find("span").css('width', percentage+'%');if(video.volume){$(".volume_icon").removeClass("un_volume");}else{$(".volume_icon").addClass("un_volume");}}$(myVideo).bind("volumechange", function(){var currentPos = myVideo.volume; //当前音量var percentage = 100*currentPos;//百分比$(".volume_bar span").css("width", percentage+"%");});var volumeFlag = false;$('.volume_bar').mousedown(function(e) { volumeFlag = true; updateVolumeBar(e.pageX, myVideo); }); $(".volume_bar").mouseup(function(e) { if(volumeFlag) { volumeFlag = false; //停止拖动,设置volumeFlag为false updateVolumeBar(e.pageX, myVideo); } }); $(".volume_bar").mousemove(function(e) { if(volumeFlag) { updateVolumeBar(e.pageX, myVideo); } });
demo中有全屏功能,不过实现的不大好,要是有什么好的方法的,希望大家指点哦!!
在此也附上video标签的各种属性详解:
方法
属性
事件
0 0
- 使用html5 video定制视频
- HTML5 - 使用<video>播放视频
- HTML5 - 使用<video>播放视频
- html5视频video的使用
- Video---HTML5视频video
- 使用HTML5的video标签播放视频
- HTML5 video 视频标签使用介绍
- html5 video视频标签
- HTML5视频标签video
- html5视频<video>
- HTML5视频video
- html5-video视频播放
- HTML5 Video(视频)
- HTML5--Video(视频)
- HTML5 Video(视频)
- html5开发<video>视频标签的使用--…
- IIS7下,使用html5的video,无法播放视频
- html5视频video标签的使用格式和属性
- 睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE
- Windows 下 AnacondaCE 安装 Theano 0.6.0rc3 问题
- Navicat for Oracle的安装配置过程
- Oracle中的Raw类型
- 黑马程序员_009_TreeSet的两种排序方式和HashSet保持元素唯一性的方式
- 使用html5 video定制视频
- mybatis_SQL映射(4)_鉴别器
- javascript知识点备忘
- 强大的命令行管理工具——WMIC
- 超炫的左右滑动效果 - ViewPager的使用
- java操作redis
- more than one row with the given identifier was found
- 菜鸟Android学习之路19——星级评分条
- 黑马程序员_010_抽象类与接口