一)HTML5页面中的多媒体

在HTML5中新增了两个新的元素--video元素和audio元素。

video元素专门用来播放网络上的视频或电影

audio元素专门用来播放网络上的音频数据。

这两个元素的使用方法也是非常简单的,只要把播放音频的url指定的该元素的src就可以了。如下:

<video src="http://xxxx.mp3">你的浏览不支持video属性</video>

另外一个元素的使用方法跟上一个是一样的。

二) HTML5元素中的基本属性

video属性和audio属性所具有得属性大致相同,接下来介绍其属性。

 

属性

描述

controls

显示或隐藏用户控制界面

autoplay

媒体是否自动播放

Loop

媒体是否循坏播放

currentTime

开始到播放现在所用的时间

duration

媒体总时间(只读)

volume

0.0-1.0的音量相对值

muted

是否静音

autobuffer

开始的时候是否缓存加载,autoplay加载的时候可以忽略次属性。

       注意:video标签拥有着额外的属性

poster

视频播放器的预览图片

Width,height

设置视频的尺寸

videoWidth,videoHeight

视频实际尺寸

 

注意:如果想读取duration()总时长,必须监听canplay事件

<script>
			window.onload=function(){
				var oVideo=document.getElementById("video")
				console.log(oVideo.duration)
				
				oVideo.addEventListener("canplay",function(){
					console.log(oVideo.duration)
				})
			}
</script>

3) 多媒体元素常用方法

媒体播放时,HTML5为我们提供了3种比较常用的方法

方法

描述

media.paly()

视频播放

media.pause()

暂停视频

media.load()

重新加载视频

 

  1. 360音阶导航
  2. 自定义视频播放
  3. 自定义音乐播放

4) 多媒体常用事件

       在利用video元素或audio元素读取或播放媒体数据时,会触发一系列的事件。如果使用javascript脚本捕获事件,就可以对这些事件处理,我们常常要利用 addEventListener 方法VideoElement.addEventListener(type,listener,useCaptrue)

       VideoElement表示页面的video或audio元素;type表示事件名称,listener表示绑定的函数,useCaptrue是一个布尔值,表示事件的响应顺序,该值如果是true,浏览器采用captrue响应方式,如果为false,浏览器采用budding响应方式,默认情况为false。

 

canplay:媒体元素能够播放触发

ontimeupdate:监听媒体元素进度条事件

下面是我根据今天所学习的内容所完成的练习

先来效果图:

html5 video 属行 html5 video file_ide

网易云的音乐播放器

功能:

简单的实现上一首,下一首,暂停开始的功能

这里CSS就不放代码了

HTML代码:

命名规则还不太熟悉,请原谅。

<div class="bg">
			<div class="hand">
				<div class="left">
					<a class="btn"></a>
				</div>
			</div>
			<div class="wrap">
				<div class="btns">
					<a class="prev" title="上一首" id="prev"></a>
					<a class="ply" title="暂停" id="play"></a>
					<a class="next" title="下一首" id="next"></a>
				</div>
				<div class="head">
					<img src="img/6.jpg" />
					<a class="mask"></a>
				</div>
				<div class="play">
					<div class="words"></div>
					<div class="m-pbar">
						<div class="barbg">
							<div class="rdy" id="rdy"></div>
							<div class="cur" id="cur" style="width: 0%;">
								<span class="btn-r" id="btn-r"></span>
							</div>
						</div>
						<span class="j-flag time" id="total_time">
							00:00
						</span>
						<em class="em-x">/</em>
						<em id="em" class="em">00:00</em>
					</div>
				</div>
				
				<div class="oper">
					<a class="icn icn-add" title="收藏"></a>
					<a class="icn icn-share" title="分享"></a>
				</div>
				
				
				<div class="ctrl">
					<div class="m-vol">
						<div class="barbg-b" id="barbg-b"></div>
						<div class="vbg" id="vbg">
							<div class="vbg-cur" id="vbg-cur"></div>
							<span class="vbg-btn" id="vbg-btn"></span>
						</div>
						<a class="icn icn-vol" id="volume"></a>
						<a class="icn icn-loop" title="循环"></a>
						<span class="add">
							<a class="icn icn-list" id="icn-bf" title="播放列表">0</a>
						</span>
					</div>
				</div>
			</div>
		</div>
		
		<div class="list" id="list-1">
			<ul class="list_ul" id="list-ul">
				
			</ul>
		</div>
		
		<audio id="audio"></audio>

JS代码:

<script>
			var oEm=document.getElementById("em")
			var oSpan=document.getElementById("total_time")
			var oPrev=document.getElementById("prev")
			var oPlay=document.getElementById("play")
			var oNext=document.getElementById("next")
			var oAudio=document.getElementById("audio")
			var oRdy=document.getElementById("rdy")
			var oCur=document.getElementById("cur")
			var oBtnr=document.getElementById("btn-r")
			var oVolume=document.getElementById("volume")
			var oBarbgb=document.getElementById("barbg-b")
			var oVbg=document.getElementById("vbg")
			var oCur1=document.getElementById("vbg-cur")
			var oBtn=document.getElementById("vbg-btn")
			var oBf=document.getElementById("icn-bf")
			var oNone=document.getElementById("list-1")
			var oUl=document.getElementById("list-ul")
			var oLi=oUl.getElementsByTagName("li")
			//console.log(oLi)
			
			var num=0
			var arr=["video/2.mp3","video/3.mp3","video/4.mp3","video/5.mp3","video/6.mp3"]
			var arr1=["明日之星","今天有酒今天醉","THE girl","喜欢你"]
			oAudio.src=arr[num]
			//转换总时长
			oAudio.addEventListener("canplay",function(){
				oSpan.innerHTML = getMin(this.duration)
			})
			
			//点击开始播放
			oPlay.onclick=function(){
				if (oAudio.paused) {
					oAudio.play()
					oPlay.style.backgroundPositionY = -165+"px"
				}else{
					oAudio.pause()
					oPlay.style.backgroundPositionY = -204+"px"
				}
			}
			
			//监听进度变化
			oAudio.ontimeupdate=function(){
				var pre=Math.floor(oAudio.currentTime/oAudio.duration*493)
				oCur.style.width=pre+"px"
				oEm.innerHTML=getMin(oAudio.currentTime)
				oBtnr.style.left=oCur.style.width
				
			}
			
			//点击进度变化
			oRdy.onclick=function(e){
				var l=e.clientX-646-oRdy.offsetLeft
				oAudio.currentTime=(l/493)*oAudio.duration
				console.log(l)
				
				//没完善
			}
			
			oBtnr.onmousedown=function(e){
				document.onmousemove=function(e){
					var l=e.clientX-646-oRdy.offsetLeft
					oAudio.currentTime=(l/493)*oAudio.duration
				}
				document.onmouseup=function(){
					document.onmousedown=null
					document.onmousemove=null
				}
				return false
			} 
			
			//自动播放
			oAudio.addEventListener("ended",function(){
				num++
				document.onmousedown=null
				document.onmousemove=null
				oPlay.style.backgroundPositionY = -164+"px"
				oAudio.src=arr[num]
				oAudio.play()
			})
			
			//上一首
			oNext.onclick=function(){
				oPlay.style.backgroundPositionY = -204+"px"
				num++
				if (num>arr.length-1) {
					num=0
				}
				oAudio.src=arr[num]
			}
			
			//下一首
			oPrev.onclick=function(){
				oPlay.style.backgroundPositionY = -204+"px"
				num--
				if (num<0) {
					num=arr.length-1
				}
				oAudio.src=arr[num]
			
				
			}
			
			//点击音频
			oVolume.onclick=function(e){
				//alert(1)
				oBarbgb.style.display="block"
				oVbg.style.display="block"
			}
			
			//点击音频的进度条
			/*oVbg.onclick=function(e){
				var l=e.clientY-78-this.offsetTop
				oCur1.style.height=l+"px"
				oBtn.style.top=l+"px"
				oAudio.volume=l/97
				
				console.log(l)
			}*/
			
			//拖动音频进度条中的点
				oBtn.onmousedown=function(e){
				document.onmousemove=function(e){
					var l=e.clientY-97-this.offsetTop
					oBtn.style.top=l+"px"
					//oAudio.volume=l/97
				}
				document.onmouseup=function(){
					document.onmousedown=null
					document.onmousemove=null
				}
				return false
			} 
			
			//点击播放列表
			var str=''
			oBf.onclick=function(){
				oNone.style.display="block"
				oBf.innerHTML=arr1.length
				//console.log(oLi.length)
				for (var i=0;i<arr1.length;i++) {
				str+='<li><a>'+arr1[i]+'</a></li>'
				}
				oUl.innerHTML=str
			}
			
			
			//获取分钟的函数
			function getMin(time){
				var m = Math.floor(time/60)
				var s = Math.floor(time%60)
				if(m<=9){
					m="0"+m
				}
				if(s<=9){
					s = "0"+s
				}
				return m+":"+s
			}
		</script>

完成点击音频的功能时出现了点了问题,还没解决,望理解。