video 标签允许你在你的HTML页面中嵌入视频内容。
这个元素可以使用网络摄像头,通过 getUserMedia()或WebRTC,或者它可以播放一个你用src 属性引用的视频源。
默认情况下,浏览器不显示这个元素的任何控制,只是显示视频。
这意味着只有在设置为自动播放的情况下才会播放音频(后面会详细介绍),而用户看不到如何停止、暂停、控制音量或在视频的特定位置跳过。
为了显示内置控件,你可以添加controls 属性。
<video src="file.mp4" controls />
这是在Chrome浏览器中的样子。

最初显示的图像是视频的第一帧。
你可以使用poster 属性显示另一张图片,这是相当普遍的需求。
<video src="video.mp4" poster="image.png" controls />
如果不存在,一旦有视频,浏览器就会显示视频的第一帧。
你可以使用type 属性来指定视频文件的MIME类型。如果没有设置,浏览器将尝试自动确定。
<video src="file.mp4" controls type="video/mp4" />
默认情况下,一个视频文件不会自动播放。添加autoplay 属性可以自动播放音频。
<video src="file.mp4" controls autoplay />
一些浏览器也需要muted 属性来自动播放。视频只有在静音的情况下才会自动播放。
<audio src="file.mp3" controls autoplay muted />
如果设置了loop 属性,就会在0:00时重新启动视频播放,否则如果不存在,视频就会在文件的末尾停止。
<video src="file.mp4" controls autoplay loop />
你可以设置width 和height 属性来设置元素所占的空间,这样浏览器就可以把它算进去,最后加载时就不会改变布局。它需要一个数字值,以像素表示。
CORS
视频受制于CORS,除非你在服务器端允许它,否则视频不能跨源播放。
如果你把这个标签放在一个网页中,什么也不会发生。没有办法启动视频,它也不能自主播放。要使视频播放,你必须添加autoplay 属性。
<video src="video.mp4" autoplay />
改变视频显示属性
你可以使用width 和height 属性为视频区域设置一个宽度和高度,以像素表示。
<video src="video.mp4" poster="image.png" controls
height="600"
width="800" />
如果不支持video ,则显示内容
video 标签被很好地支持,直到IE9,所以现在应该不需要有一个占位文本,但我们有这个选择。你只需添加一个关闭标签,并在开头和结尾标签之间插入文本。
<video src="video.mp4">Video tag not supported</video>
添加多个来源
浏览器可以实现一种视频编解码器,但不能实现另一种。也许你想使用一个较新的标准,将文件大小减半,但你仍然想支持旧的浏览器。
你可以用source 标签来做。
<video controls>
<source src="video.mp4" type="video/mp4" />
<source src="video.avi" type="video/avi"/>
</audio>
你可以使用CSS对控件进行样式设计,尽管这不在本介绍的范围之内。
预加载视频
如果你不设置autoplay ,规范说浏览器将只下载视频元数据(例如,找出长度),但不会下载视频本身。
你可以使用以下方法强制预加载视频
<video src="video.mp4" preload="auto" />
使用视频事件工作
我们可以使用JavaScript监听每个video 元素的事件,以创建有趣的项目和界面。有很多不同的事件可以玩。
play 事件是在视频播放开始时触发的。
document.querySelector('video').addEventListener('play', () => {
alert('Video is playing!!!')
})
你也可以直接使用HTML元素上的on<event> 属性直接添加这个事件(和其他事件一样)。
<video src="video.mp4" controls onplay="playing()" />
const playing = () => {
alert('Video is playing!!!')
})
这些是你可以监听的几个事件。
play视频开始播放pause视频暂停了ended视频播放完毕timeupdate用户与播放的时间线进行互动,并向前/向后移动volumechange用户改变了音量
还有很多与视频加载相关的事件,你可以在MDN上找到完整的列表。