前言
HTML5中<
video
>
标签定义视频,比如电影片段或其他视频流。也就是说video是用来播放视频的,而且是HTML5中的新标签。所以对老浏览器是不支持的,来看看支持。
Video属性
属性 | 值 | 描述 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则视频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
height | pixels | 设置视频播放器的高度。 |
width | pixels | 设置视频播放器的宽度。 |
loop | loop | 如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
muted | muted | 规定视频的音频输出应该被静音。 |
poster | URL | 规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。 |
preload | pixels | 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 "autoplay",则忽略该属性。 |
src | URL | 要播放的视频的 URL。 |
Video事件
属性 | 值 | 描述 |
---|---|---|
oncanplay | script | 当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。 |
oncanplaythrough | script | 当媒介能够无需因缓冲而停止即可播放至结尾时运行的脚本。 |
onemptied | script | 当发生故障并且文件突然不可用时运行的脚本(比如连接意外断开时)。 |
onended | script | 当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。 |
onerror | script | 当在文件加载期间发生错误时运行的脚本。 |
onloadeddata | script | 当媒介数据已加载时运行的脚本。 |
onpause | script | 当媒介被用户或程序暂停时运行的脚本。 |
onplay | script | 当媒介已就绪可以开始播放时运行的脚本。 |
onplaying | script | 当媒介已开始播放时运行的脚本。 |
onprogress | script | 当浏览器正在获取媒介数据时运行的脚本。 |
ontimeupdate | script | 当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。 |
onvolumechange | script | 每当音量改变时(包括将音量设置为静音)时运行的脚本。 |
onwaiting | script | 当媒介已停止播放但打算继续播放时(比如当媒介暂停已缓冲更多数据)运行脚本 |
示例
html
代码语言:javascript复制<video width="100%" height="100%" id="playVideo">
<source src="视频地址" type="video/mp4"></source>
</video>
<!--自定义进度条和音量控制-->
<div class="playControll">
<div class="playPause playIcon"></div>
<div class="timebar">
<span class="currentTime">0:00:00</span>
<div class="progress">
<div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div>
</div>
<span class="duration">0:00:00</span>
</div>
<div class="otherControl">
<span class="volume glyphicon glyphicon-volume-down"></span>
<span class="fullScreen glyphicon glyphicon-fullscreen"></span>
<div class="volumeBar">
<div class="volumewrap">
<div class="progress">
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: 8px;height: 40%;"></div>
</div>
</div>
</div>
</div>
</div>
js
代码语言:javascript复制var myVid=document.getElementById("playVideo");
//播放的速度
myVid.playbackRate = 1
myVid.onloadstart = function(){
console.log(`onloadstart 客户端开始请求数据 `);
}
myVid.ondurationchange=function(){
console.log(`durationchange 资源长度改变 `);
}
myVid.onratechange=function(){
console.log(`onratechange //播放速率改变 `);
}
myVid.onseeking=function(){
console.log(` //seeking 寻找中 点击一个为(缓存)下载的区域`);
}
myVid.onseeked=function(){
console.log(` //seeked 寻找完毕 `);
}
myVid.onplay=function(){
console.log(`开始播放时触发 `);
}
myVid.onwaiting=function(){
console.log(`播放由于下一帧数据未获取到导致播放停止,但是播放器没有主动预期其停止,仍然在努力的获取数据,简单的说就是在等待下一帧视频数据,暂时还无法播放。 `);
}
myVid.onplaying=function(){
console.log(`真正处于播放的状态,这个时候我们才是真正的在观看视频。 `);
}
myVid.oncanplay=function(){
console.log(`视频播放器已经可以开始播放视频了,但是只是预期可以正常播放,不保证之后的播放不会出现缓冲等待。 `);
}
myVid.onpause=function(){
console.log(`暂停播放时触发 `);
}
myVid.onended=function(){
alert(` //播放结束 loop 的情况下不会触发 `);
}
myVid.onvolumechange=function(){
console.log(`音量改变 `);
}
myVid.onloadedmetadata=function(){
console.log(`获取视频meta信息完毕,这个时候播放器已经获取到了视频时长和视频资源的文件大小。 `);
}
myVid.onloadeddata=function(){
console.log(`"视频播放器第一次完成了当前播放位置的视频渲染。"`);
}
myVid.onabort=function(){
console.log(`客户端主动终止下载(不是因为错误引起), `);
}
myVid.onerror=function(){
console.log(`请求数据时遇到错误`);
//1.用户终止 2.网络错误 3.解码错误 4.URL无效
alert(myVid.error.code);
}
//客户端请求数据
myVid.onprogress=function(){
console.log(`客户端正在请求数据 触发多次,是分段请求的`);
console.log(myVid.buffered);
//0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
console.log(`networkState ${myVid.networkState}`);
// //当前播放的位置,赋值可改变位置 myVid.currentTime = 11 从11秒位置开始播放
console.log(myVid.currentTime);
// //返回当前资源的URL
console.log(myVid.currentSrc);
console.log(myVid.videoWidth);
//播放结束 返回true 或 false
console.log(myVid.ended);
//音量大小 为0-1 之间的值
console.log(myVid.volume);
//当前资源长度
console.log(myVid.duration);
console.log(myVid.startDate)
// myVid.currentTime = 11
}
视频控制
代码语言:javascript复制var myVid=document.getElementById("playVideo");
myVid.play(); //播放视频
myVid.pause(); //暂停视频
myVid.width=560; //设置视频宽度
myVid.height=560; //设置视频高度
myVid.volume = 0.8; // 音量控制
全屏和退出全屏
代码语言:javascript复制// 全屏
if (playVideo[0].requestFullscreen) {
playVideo[0].requestFullscreen();
} else if (playVideo[0].mozRequestFullScreen) {
playVideo[0].mozRequestFullScreen();
} else if (playVideo[0].webkitRequestFullscreen) {
playVideo[0].webkitRequestFullscreen();
} else if (playVideo[0].msRequestFullscreen) {
playVideo[0].msRequestFullscreen();
}
// 退出全屏
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozExitFullScreen) {
document.mozExitFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
演示地址 源码地址