HTML5 Video标签的属性、方法和事件汇总,以及常用视频插件推荐

server/2024/12/22 20:36:14/
htmledit_views">

🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享html" title=前端>前端后端相关技术与工作常见问题~

💟 作    者:码喽的自我修养🥰
📝 专    栏:HTML5与CSS3 🎉

🌈 创作不易,如果能帮助到带大家,欢迎 收藏+关注  💕

HTML5 <video> 标签是一个用来嵌入视频内容的标签,它有一系列的属性用于控制视频的播放、显示和交互。以下是一些常用的属性和事件:

常用属性: 

src: 定义视频的URL。

javascript"><video src="myVideo.mp4"></video>

poster: 设置视频尚未加载或播放时显示的图像URL。

javascript"><video src="myVideo.mp4" poster="thumbnail.jpg"></video>

preload: 控制视频数据的加载策略,可以是 "auto"(默认,根据浏览器决定)、"metadata"(只加载元数据,如长度)或 "none"(不预先加载)。

javascript"><video src="myVideo.mp4" preload="auto"></video>

autoplay: 规定视频是否应该在就绪后立即自动播放。

javascript"><video src="myVideo.mp4" autoplay></video>

 controls: 是否显示浏览器自带的播放控制(如播放/暂停按钮、进度条等)。

javascript"><video src="myVideo.mp4" controls></video>

loop: 规定视频是否应在结束时重新开始播放。 

javascript"><video src="myVideo.mp4" loop></video>

width 和 height: 设置视频播放器的宽度和高度。

javascript"><video src="myVideo.mp4" width="320" height="240"></video>

muted: 规定视频是否静音播放。

javascript"><video src="myVideo.mp4" muted></video>

常用方法

HTML5 <video> 元素作为一个JavaScript可操作的对象,拥有许多方法来控制视频播放行为。以下是其中的一些常用方法:

  1. play()
  • 开始播放或继续播放视频。如果视频已经处于播放状态,则此方法无效。
javascript">var myVideo = document.querySelector('video');
myVideo.play();
  1. pause()
  • 暂停视频播放。
javascript">myVideo.pause();
  1. load()
  • 重新加载视频源或初始化当前选定的来源。这会清除任何现有播放位置或错误状态。
javascript">myVideo.load();
  1. currentTime 属性(读写):
  • 读取或设置视频播放的当前时间(单位为秒)。
javascript">// 获取当前播放位置 
var currentPos = myVideo.currentTime; 
// 设置新的播放位置 
myVideo.currentTime = 30; // 秒数
  1. duration 属性(只读):
  • 返回视频的总时长(若已知)。
javascript">var totalDuration = myVideo.duration;

     1. paused 属性(只读):

  • 返回一个布尔值,表示视频是否处于暂停状态。
javascript">var isPaused = myVideo.paused;
  1. volume 属性(读写):
  • 设置或获取视频音量(范围0.0-1.0)。
javascript">// 设置音量 
myVideo.volume = 0.5; 
// 获取音量 
var volumeLevel = myVideo.volume;
  1. mute() 和 unmute()
javascript">myVideo.mute(); // 静音
myVideo.unmute(); // 取消静音
  1. requestFullscreen()
  • 请求视频进入全屏模式(需兼容不同浏览器的API,如 mozRequestFullScreen, webkitRequestFullscreen 等)。
javascript">if (myVideo.requestFullscreen) {  myVideo.requestFullscreen(); 
} else if (myVideo.mozRequestFullScreen) { /* Firefox */  myVideo.mozRequestFullScreen(); 
} else if (myVideo.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ myVideo.webkitRequestFullscreen(); 
}
  1. addEventListener()
  • 用于监听视频相关的事件,如前面提及的 playpauseended 等。
javascript">myVideo.addEventListener('ended', function() { console.log('Video has ended.'); });

这些方法和属性共同构成了对HTML5 <video> 元素的基本控制,使开发者能够实现诸如播放控制、音量调节、播放位置定位、全屏切换等各种功能。

常用事件:

loadstart: 视频加载开始时触发。

javascript">var vid = document.querySelector('video'); 
vid.addEventListener('loadstart', function() { console.log('Loading started...'); });

progress: 视频数据正在加载过程中持续触发。

javascript">vid.addEventListener('progress', function() { console.log('Data is loading...'); });

loadeddata: 第一帧数据已加载完毕,此时视频可以开始播放,但不一定所有数据都已加载。

javascript">vid.addEventListener('loadeddata', function() { console.log('First frame is loaded.'); });

canplay: 当前可用数据足以开始播放,但不保证流畅播放至结尾。

javascript">vid.addEventListener('canplay', function() { console.log('Ready to play.'); });

canplaythrough: 预计有足够的数据可以流畅播放至视频结尾。

javascript">vid.addEventListener('canplaythrough', function() { console.log('Can play the video through without buffering issues.'); });

play: 视频开始或恢复播放时触发。

javascript">vid.addEventListener('play', function() { console.log('Video is playing.'); });

pause: 视频暂停时触发。

javascript">vid.addEventListener('pause', function() { console.log('Video is paused.'); });

ended: 视频播放完毕时触发。

javascript">vid.addEventListener('ended', function() { console.log('Video has ended.'); });

timeupdate: 当视频播放位置发生变化时持续触发,常用于实时更新进度条。

javascript">vid.addEventListener('timeupdate', function() { var currentTime = vid.currentTime; console.log('Current time:', currentTime); });

error: 当视频加载或播放发生错误时触发。

javascript">vid.addEventListener('error', function(event) { console.error('An error occurred:', event.target.error); });

以上是一些常见的 <video> 标签属性和事件,它们可以帮助开发者更好地控制视频内容的展现和交互行为。

常用视频插件推荐

虽然HTML5 视频播放并不需要外部库就能在大部分现代浏览器中直接使用,但是为了更好的兼容和扩展,有几个不错的视频插件推荐给大家

 Video.js: Video.js 是一个非常流行的开源 HTML5 视频播放器框架,它可以优雅地降级到 Flash 并提供一致的 UI 体验,易于自定义皮肤和扩展功能。官网:https://videojs.com/

 Plyr : Plyr 是一个简洁、轻量级的 HTML5 视频和音频播放器,它支持自定义样式并且在各个浏览器之间提供了优秀的兼容性和一致性。官网:https://plyr.io/

 Clappr: Clappr 是一个可扩展且易于使用的视频播放器,支持 HLS、MP4 和 Dash 流媒体协议。官网:https://github.com/clappr/clappr

 HLS.js: 如果你需要播放 HLS(HTTP Live Streaming)流媒体,HLS.js 是一个纯 JavaScript 的 HLS 解析器和播放器,可以在不支持原生 HLS 的浏览器上播放 HLS 流。官网:https://github.com/video-dev/hls.js

每个库都有各自的特点和优势,可以根据项目需求来选择合适的视频播放库。

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家点点收藏+关注~💕 

     更多专栏订阅推荐:

🥕 JavaScript深入研究

👍 html" title=前端>前端工程搭建
💕 vue从基础到起飞

✈️ HTML5与CSS3

🖼️ JavaScript基础

⭐️ uniapp与微信小程序

📝 html" title=前端>前端工作常见问题与避坑指南

✍️ GIS地图与大数据可视化

📚 常用组件库与实用工具

💡 java入门到实战 


http://www.ppmy.cn/server/124930.html

相关文章

IMX6UL开发板中断实验(三)

在上一节我们编写完成了中断驱动文件和中断驱动头文件&#xff0c;那么这一讲我们将继续中断实验 下面就是GPIO的中断设置&#xff0c;第一步要设置中断GPIO的触发方式&#xff0c;首先我们先看到寄存器&#xff0c;一共有GPIOx_ICR1和ICR2&#xff0c; 图如上&#xff0c;ICR1…

Spark_UDF处理缺失值或空值

在Apache Spark中&#xff0c;处理空值&#xff08;null&#xff09;是一个常见的需求&#xff0c;尤其是在使用用户定义的函数&#xff08;UDF&#xff09;时。 在UDF内部检查空值&#xff1a;在UDF中&#xff0c;你应该检查输入值是否为空&#xff0c;并相应地处理。例如&am…

图解C#高级教程(二):事件

在现实生活当中&#xff0c;有一些事情发生时&#xff0c;会连带另一些事情的发生。例如&#xff0c;当某国的总统发生换届时&#xff0c;不同党派会表现出不同的行为。两者构成了“因果”关系&#xff0c;因为发生了A&#xff0c;所以发生了B。在编程语言当中&#xff0c;具有…

贪心+构造,CF 761D - Dasha and Very Difficult Problem

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 761D - Dasha and Very Difficult Problem 二、解题报告 1、思路分析 如…

C#里使用最简单的线程调用界面更新的方法

在C#的界面应用里&#xff0c;经常会遇到线程里计算得到的数据&#xff0c;要更新到界面上。 但是线程与界面线程一般不是同一个线程&#xff0c;不能直接调用更新&#xff0c;需要采用委托的方式来更新。 意思就是说&#xff0c;要线程把数据定义更新的方法之后&#xff0c;…

第18届全国热管会议举办,积鼎科技分享「环路热管相变传热仿真」前沿实践

第18届全国热管会议于9月20日至22日在海滨城市日照举行&#xff0c;该会议由中国工程热物理学会热管专业组主办&#xff0c;山东大学和日照市科学技术协会联合承办&#xff0c;汇聚了全国热管技术领域的专家学者及企业代表。在该会议上&#xff0c;积鼎科技在热管仿真方面的成果…

数据结构 ——— C语言实现无哨兵位单向不循环链表

目录 前言 动态顺序表的缺陷 单链表的概念 单链表中节点的结构 单链表逻辑结构示意图​编辑 实现单链表前的准备工作 实现单链表 1. 定义节点的指针 2. 创建节点 3. 打印单链表中的所有数据 4. 在单链表头部插入数据 5. 在单链表尾部插入数据 6. 在单链表头部删除数…

SpringBoot时间类型参数反序列化

近期在做项目的时候&#xff0c;对于时间类型的参数&#xff0c;前端不同的人在写代码的时候传参格式各不一样&#xff08;可能是不同的日历控件默认的格式不一样&#xff09;&#xff0c;每换一个人就要强调一遍格式&#xff0c;后面想了想&#xff0c;还是我自己在后端兼容处…