Vedio的使用
属性
<video
controls
autoplay
loop
preload = "auto"
poster = "./popup.png"
webkit-playsinline = "true"
playsinline = "true"
x5-video-player-type = "h5"
x5-video-player-fullscreen = "true"
x5-webkit-airplay = "allow"
x5-video-orientation = "portranint" >
<source src="video.mp4" type="video/mp4">
<source src="video.ogg" type="video/ogg" codecs=dirac speex>
</video>
- controls 显示标准html5视频/音频播放器控制条
- autoplay 自动播放
- loop 让文件循环播放
- proload 用来缓存大体积文件,可选值有三个
none不缓存auto缓存metadata之缓存文件元信息 - poster 视频封面
- webkit-playsinlin = "true" ios10中有用,其他暂不支持,让视频小窗口内播放也就是不全屏播放
- x5-video-player-type = "h5"启用H5播放器,是wechat特性,就是在视频全屏的时候,div可以呈现在视频层上,
- x5-video-player-fullscreen = "true" 全屏设置,设置为true是防止横屏
- x5-video-orientation = "portraint"播放器屏幕方向,
landscape横屏portraint竖屏 默认竖屏,需要开启h5模式(x5-video-player-type) - source - 标签是为了能够兼容各种浏览器对不同媒体类型的支持,我们可以用多个
元素来提供多个不同的媒体类型。支持mp4格式视频流的浏览器可以播放mp4文件,如果不支持,可以播放Ogg文件 - 是用来指定播放使用的解码器(codecs); 这样就可以更精确的让浏览器如何播放提供的视频。
事件
let media = document.querySelector("video")
网络状态
-
media.currentSrc 返回当前资源的url
-
media.src 返回设置当前资源的url
-
media.canPlayType(type) 能否播放某种格式的资源,返回三个字符串 maybe probably or " "
<div> <button onclick="checkVideoCompat();"> Test for video format type </button> </div> <div id="display"> </div> function checkVideoCompat() { var myvideo = document.createElement("video"); var msg = document.getElementById("display"); msg.innerHTML = ""; if(myvideo.canPlayType) { var playMsg = myvideo.canPlayType('video/mp4; codecs="avc1.42E01E"'); if ("" != playMsg) { msg.innerHTML += "mp4/H.264 is " + playMsg + " supported <br/>"; } playMsg = myvideo.canPlayType('video/ogg; codecs="theora"'); if ("" != playMsg) { msg.innerHTML += "ogg is " + playMsg + " supported<br/>"; } playMsg = myvideo.canPlayType('video/webm; codecs="vp8, vorbis"'); if ("" != playMsg) { msg.innerHTML += "webm is " + playMsg + " supported<br/>"; } } else { msg.innerHTML += "no video support"; } } </script> -
media.networkState 0:此元素未初始化 1:正常但没有使用网络 2:正在下载数据 3:没有找到资源
- NETWORK_EMPTY (数值 0)
所在的media元素没有被初始化,所有的属性还是初始状态。 - NETWORK_IDLE (数值1)
这个元素的资源选择算法已经激活,并且选择了一个资源,但它实际上没有使用网络。 - NETWORK_LOADING (数值2)
用户处于活动,正在加载数据。 - NETWORK_NO_SOURCE (数值3)
这个元素的资源选择算法已经激活,但还没有发现可用资源。
- NETWORK_EMPTY (数值 0)
-
media.load 重新加载src的指定资源
-
media.preload none不加载 metadata:预载资源信息 auto
准备状态
- media.readyState
HAVE_NOTHINGHAVE_METADATAHAVE_CURRENT_DATAHAVE_FUTURE_DATAHAVE_ENOUGH_DATA - media.seeking 是否正在seeking
回放状态
-
media.currentTime = value 当前播放位置,赋值可改变位置
-
media.startTime 一般为0 如果为流媒体或者不从0开始的资源则不为0
-
media.duration 当前资源长度,流返回无限
-
media.paused 是否暂停
//播放按钮 let btn = document.querySelector("button") btn.onClick = function(){ if(media.paused){ media.play() btn.textContent = "||" }else{ media.pause(); btn.textContent = ">" } } -
media.played 返回已经播放的区域
TimeRanges -
media.seekable 返回可以seek的区域
TimeRanges -
media.ended 是否结束
-
media.autoPlay 是否自动播放
-
media.loop 是否循环播放
-
media.play 播放
-
media.pause 暂停
视频控制
-
media.controls 是否有默认控制条
-
media.volume= value 音量
-
media.muted = value 静音
TimeRanges
- TimeRanges.length; //区域段数
- TimeRanges.start(index) //第index段区域的开始位置
- TimeRanges.end(index) //第index段区域的结束位置
以下是可以为其绑定的方法 ---addEventListner绑定。否则加on
var eventTester = function(e){
Media.addEventListener(e,function(){
console.log((new Date()).getTime(),e)
},false);
}
- eventTester("loadstart"); //客户端开始请求数据
- eventTester("progress"); //客户端正在请求数据
- eventTester("suspend"); //延迟下载
- eventTester("abort"); //客户端主动终止下载(不是因为错误引起)
- eventTester("loadstart"); //客户端开始请求数据
- eventTester("progress"); //客户端正在请求数据
- eventTester("suspend"); //延迟下载
- eventTester("abort"); //客户端主动终止下载(不是因为错误引起),
- eventTester("error"); //请求数据时遇到错误
- eventTester("stalled"); //网速失速
- eventTester("play"); //play()和autoplay开始播放时触发
- eventTester("pause"); //pause()触发
- eventTester("loadedmetadata"); //成功获取资源长度
- eventTester("loadeddata"); //
- eventTester("waiting"); //等待数据,并非错误
- eventTester("playing"); //开始回放
- eventTester("canplay"); //可以播放,但中途可能因为加载而暂停
- eventTester("canplaythrough"); //可以播放,歌曲全部加载完毕
- eventTester("seeking"); //寻找中
- eventTester("seeked"); //寻找完毕
- eventTester("timeupdate"); //播放时间改变
- eventTester("ended"); //播放结束
- eventTester("ratechange"); //播放速率改变
- eventTester("durationchange"); //资源长度改变
- eventTester("volumechange"); //音量改变
常见API地址https://www.runoob.com/jsref/jsref-tutorial.html
浙公网安备 33010602011771号