HTML5 Audio/Video 标签,属性,方法,事件汇总
一、标签介绍1、audio标签属性src音乐的URLpreload预加载autoplay自动播放loop循环播放controls浏览器自带的控制条Html代码audio id”media” src”http://www.abc.com/test.mp3″ controls/audio2、video标签属性src视频的URLposter视频封面没有播放时显示的图片preload预加载autoplay自动播放loop循环播放controls浏览器自带的控制条width视频宽度height视频高度Html代码video id”media” src”http://www.abc.com/test.mp4″ controls width”400px” heigt”400px”/video二、获取HTMLVideoElement和HTMLAudioElement对象Js代码//audio可以直接通过new创建对象Media new Audio(“http://www.abc.com/test.mp3″);//audio和video都可以通过标签获取对象Media document.getElementByIdx_x(“media”);三、Media方法和属性HTMLVideoElement 和 HTMLAudioElement 均继承自 HTMLMediaElementJs代码//错误状态Media.error; //null:正常 Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效//网络状态Media.currentSrc; //返回当前资源的URL Media.src value; //返回或设置当前资源的URL Media.canPlayType(type); //是否能播放某种格式的资源 Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源 Media.load(); //重新加载src指定的资源 Media.buffered; //返回已缓冲区域TimeRanges Media.preload; //none:不预载 metadata:预载资源信息 auto://准备状态Media.readyState; //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA Media.seeking; //是否正在seeking//回放状态Media.currentTime value; //当前播放的位置赋值可改变位置 Media.startTime; //一般为0如果为流媒体或者不从0开始的资源则不为0 Media.duration; //当前资源长度 流返回无限 Media.paused; //是否暂停 Media.defaultPlaybackRate value;//默认的回放速度可以设置 Media.playbackRate value;//当前播放速度设置后马上改变 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段区域的结束位置四、事件Js代码eventTester function(e){ Media.addEventListener(e,function(){ console.log((new Date()).getTime(),e); }); } 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”); //音量改变在以前网页没有显示视频的一个标准所以基本都要借助插件来实现视频的播放插件过多或者插件自身问题很容易引起浏览器的假死造成用户体验不佳。html5 video标签的出现改变了这一局面可以让用户在不用安装任何插件的情况下轻松的观看视频。vedio和audio的使用技巧基本相同本文仅以vedio作示例。先引用一段别人介绍的vedio标签大多数用户已经安装了Flash插件事实上大概95%的上网用户都装有Flash的某个版本但HTML 5的支持者正在推动一个开放的不需要任何插件的视频标准。这就是HTML 5的新标签带来的构想他提供了一个嵌入视频以及与其交互而不需要类似Flash的私有插件的方法。不幸的是视频并非那么简单。不仅仅是浏览器需要理解标签而且需要一个必要的编码译码器来播放视频。明显的解决方法只能是HTML 5规范的缔造者们选择一个视频编码译码器并且让每一个浏览器制造商执行。总之这就是所推荐的打算。同时这也是引起混乱的导火索。对于各种各样编码译码器的争论就已经很烦杂了但更悲剧的事情是浏览器制造商们还不能就此达成统一。苹果不愿意使用提议的Ogg Theora编码译码器但Opera和Mozilla也不愿意支付由于他们的浏览器装载H.264编码译码器而造成的许可费用。Google同时支持两者微软面对争论远远的置身事外因为他现在根本没有计划去支持HTML 5的视频元素。 面对浏览器制造商的僵持局面HTML 5善意的独裁者Ian Hickson甩了甩他的手并说到去他妈的。所以HTML5规范中没有特别指名或规定的视频编码解码器。”好吧引用到这儿。 如今的情况是微软终于陷进去了但很悲剧的是在IE 9中只支持H.264。同时Googe终于在I/O大会上发布了开源的视频封装格式webM和视频编码格式VP8。Opera、Mozilla、Chrome宣布将完全支持VP8IE宣布部分支持需要装一个插件但如果我没记错的话HTML 5的一个愿景就是脱离浏览器插件微软真是让人觉得悲剧。 苹果决定不支持VP8乔布斯认为VP8在质量或效率方面不如H.264不能满足其产品的要求。另外最新消息表明VP8还有可能牵扯到专利的问题如果真的侵犯专利的话Opera和Firefox估计马上会无视VP8的。 说了这么多其实说到底就是现在如果要在页面中使用video标签需要考虑三种情况支持OggTheora或者VP8如果这玩意儿没出事的话的Opera、Mozilla、Chrome支持H.264的Safari、IE 9、Chrome都不支持的IE6、7、8。好吧现在让我们从技术层面来认识HTML 5的视频包括video标签的使用视频对象可以用到的媒介属性和方法以及媒介事件。我们来看看video标签具体是怎么使用的以及它有哪些属性和方法。使用方法video width320 height240 controlscontrols source srcmovie.ogg typevideo/ogg source srcmovie.mp4 typevideo/mp4 Your browser does not support the video tag. /video各浏览器目前对html5视频格式的支持浏览器 | 影音格式 OggTheora MP4(H.264) WebM Microsoft Internet Explorer9 × √ × Mozilla Firefox5 √ × √ Google Chrome13 √ √ √ Apple Safari5 × √ × Opera11 √ × √属性列表属性 值 描述 autoplay autoplay 如果出现该属性则视频在就绪后马上播放。默认为false controls controls 如果出现该属性则向用户显示控件比如播放按钮。这些控件是由浏览器来提供的样式也可能因为不同浏览器而不一样 height pixels 设置视频播放器的高度。 loop loop 如果出现该属性则当媒介文件完成播放后再次开始播放。 preload none、metadata、auto 如果出现该属性则视频在页面加载时进行加载并预备播放。如果使用autoplay则忽略该属性。 auto - 当页面加载后载入整个视频 meta - 部分预加载。使用此属性值代表页面制作者认为用户不期望此视频但为用户提供一些元数据包括尺寸第一帧曲目列表持续时间等等 none - 不进行预加载。使用此属性值可能是页面制作者认为用户不期望此视频或者减少HTTP请求 src url 要播放的视频的URL。 poster url 预览图媒介属性一般用于js操作属性 可读状态 描述 error 只读 使用media.error返回一个MediaError对象表明当前的错误状态如果没有出错返回null共有4个可能值。 MEDIA_ERR_ABORTED数字值为1媒体资源获取异常 MEDIA_ERR_NETWORK数字值为2网络错误 MEDIA_ERR_DECODE数字值为3媒体解码错误 MEDIA_ERR_SRC_NOT_SUPPORTED数字值为4视频格式被不支持。 currentSrc 只读 返回该媒介标签的src属性值 networkState 只读 返回媒介的网络状态共有4个可能值。 NETWORK_EMPTY数字值为0尚未初始化 NETWORK_IDLE数字值为1加载完成网络空闲 NETWORK_LOADING数字值为2视频加载中 NETWORK_NO_SOURCE数字值为3加载失败。 preload 可读写 可获取或改变媒介标签的preload属性值 buffered 只读 返回一个TimeRanges对象确认浏览器已缓存媒介文件 readyState 只读 返回媒介当前播放位置的就绪状态共有5个可能值。 HAVE_NOTHING数字值为0当前播放位置无有效媒介资源 HAVE_METADATA数字值为1加载中媒介资源确认存在但当前位置没有能够加载到有效媒介数据进行播放 HAVE_CURRENT_DATA数字值为2已获取到当前播放数据但没有足够的数据进行播放 HAVE_FUTURE_DATA数字值为3已获取到后续播放数据可以进行播放 HAVE_ENOUGH_DATA数字值为4可以进行播放且浏览器确认媒体数据以某一种速度进行加载可以保证有足够的后续数据进行播放而不会使浏览器的播放进度赶上加载数据的末端。 seeking 只读 返回一个布尔值表明浏览器是否正在请求数据ture表示浏览器正在请求数据false表示浏览器已停止请求。 seekable 只读 发挥一个TimeRanges对象表明可以对当前媒介资源进行请求。 currentTime 可读写 获取或改变视频的播放位置。单位为秒 startTime 只读 返回媒介文件播放的开始时间通常为0 duration 只读 返回媒介文件总的播放时长 played 只读 返回一个TimeRanges对象标明浏览器已播放的媒介资源范围 paused 只读 返回一个布尔值表明媒介是否暂停播放ture表示媒介暂停播放false表示媒介正在播放。 ended 只读 返回一个布尔值表明媒介是否已结束ture表示媒介已经播放完毕false表示还未播放完毕。 defaultPlaybackRate 可读写 返回媒介默认的播放速率或对其赋值改变媒介的默认播放速率。 playbackRate 可读写 返回当前的媒介播放速率或对其赋值改变当前的媒介播放速率 autoplay 可读写 返回一个布尔值表明当前媒介是否设置了自动播放ture表示当前媒介为自动播放false表示非自动播放或对其赋值设置是否自动播放。 loop 可读写 返回一个布尔值表明当前媒介是否设置了循环播放ture表示当前媒介设置了循环播放false表示没有设置循环播放或对其赋值设置是否循环播放。 controls 可读写 返回一个布尔值表明当前媒介是否使用了浏览器默认的播放控制栏ture表示加载了false表示没有加载或对其赋值设置是否使用浏览器默认的播放控制栏 volume 可读写 返回当前媒介的音量值或对其赋值改变媒介的播放音量范围为0到10相当于静音1为最大音量。 muted 可读写 返回一个布尔值表明当前媒介播放是否开启静音ture表示没有开启静音false表示静音或对其赋值设置播放是否静音。很简单那我们来做一个demo。代码如下!DOCTYPE html html head titlehtml5 视频标签学习/title meta http-equivContent-Type contenttext/html;charsetutf-8; /head body header h1自定义视频播放器/h1 div 当前播放 《span idcurrentMoviemovie1/span》br 当前播放速度 span idcurrentSpeed1X/spanbr 当前声音大小为 span idcurrentVolume100/spanbr /div /header section article video stylefloat:left; idtestVideo preloadmetadata srcmovie.ogg height300 controls 你的浏览器不支持html5视频 /video div stylefloat:left;margin-left:10px; h3播放列表/h3 ul liamovie1/a/li liamovie2/a/li liamovie3/a/li liamovie4/a/li /ul /div /article article styleclear:both; br/ button idplay播放/button button idpause暂停/button button idstop停止/button button idprev前一个/button button idnext后一个/button button idupVolume音量/button button iddownVolume音量-/button button idfastFoward快进/button button idfastBackward快退/button br/ 从input typetext idmin stylewidth:20px; value0/分跳转到input typetext idsec stylewidth:20px; value0/播放 button idlocate确认/button /article section script typetext/javascript var $ function(id){return document.getElementById(id);}; var _video $(testVideo); //视频列表 var playList { current : 0, list : [movie.ogg,war3.ogg,movie.ogv,trailer.webm,trailer.ogv] } var videoUtil { //播放 play : function(){ _video.play(); }, //暂停 pause : function(){ _video.pause(); }, //停止 stop : function(){ _video.currentTime 0; _video.pause(); }, //下一个视频 next : function(){ if(playList.current playList.list.length-1){ playList.current 0; }else{ playList.current; } _video.srcplayList.list[playList.current]; _video.play(); }, //前一个视频 prev : function(){ if(playList.current 0){ playList.current palyList.list.length-1; }else{ playList.current--; } _video.srcplayList.list[playList.current]; _video.play(); }, //加大声音,每次加大1/10 upVolume : function(){ _video.volume 0.1; }, //减小声音每次减小1/10 downVolume : function(){ _video.volume - 0.1; }, //翻倍加快播放速度 fastFoward : function(){ //FF不支持playbackRate if(_video.playbackRate){ _video.playbackRate _video.playbackRate*2; }else{ alert(对不起你的浏览器不支持改变播放速度); } }, //降低播放速度 fastBackward : function(){ if(_video.playbackRate){ _video.playbackRate _video.playbackRate/2; }else{ alert(对不起你的浏览器不支持改变播放速度); } }, //跳转到指定时间点播放 locate : function(){ var min $(min).value; var sec $(sec).value; var time parseInt(min)*60parseInt(sec); _video.currentTime time; _video.play(); }, bindEvent : function(){ var self this; //绑定页面上各个按钮的事件 var btns document.getElementsByTagName(button); for(var i 0 ;i btns.length ; i){ var el btns[i]; el.onclick self[el.id]; } //播放完毕自动播放下一个 _video.onended function(){ var event document.createEvent(HTMLEvents); event.initEvent(click, true, true); $(next).dispatchEvent(event); } //循环检查视频的当前状态 setInterval(function(){ var speed _video.playbackRate||1; var movie movieplayList.current; var volume parseInt(_video.volume*100); $(currentMovie).innerHTML movie; $(currentSpeed).innerHTML speedX; $(currentVolume).innerHTML volume; },200); } }; window.onload function(){ videoUtil.bindEvent(); } /script /body /html

相关新闻

报错:'str' object has no attribute 'decode'

报错:'str' object has no attribute 'decode'

进入报错的文件夹operations.py,修改 query query.decode(errors‘replace’) 为 query query.encode(errors‘replace’)

2026/7/28 16:03:41阅读更多 →
HttpClient源码解析系列一:概括及使用

HttpClient源码解析系列一:概括及使用

一、简单介绍下Http, tcp/ip和socket区别:首先看一下无处不在的OSI七层传输模型:第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;(Http协议位于该层)第二层:表示层。定义不同的系统…

2026/7/28 16:03:41阅读更多 →
5分钟免费获取QQ空间历史说说的完整指南:GetQzonehistory工具使用教程

5分钟免费获取QQ空间历史说说的完整指南:GetQzonehistory工具使用教程

5分钟免费获取QQ空间历史说说的完整指南:GetQzonehistory工具使用教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾在深夜翻看QQ空间,想要找回那些记…

2026/7/28 16:01:41阅读更多 →
600万年薪抢疯了!大模型人才火爆,小白也能入局,速收藏!

600万年薪抢疯了!大模型人才火爆,小白也能入局,速收藏!

大厂争抢AI人才,大模型算法成热招岗位第一,AI科学家月薪破10万。企业看重实干能力,博士实习日薪超千元。AI人才分三类:A类核心技术人才,B类应用开发人才,C类AI使用者。普通理工科学生可切入B类,…

2026/7/28 17:19:57阅读更多 →
##将一个字符的前n个字符左旋##判断一个字符串是否为另外一个字符串旋转之后的字符串。

##将一个字符的前n个字符左旋##判断一个字符串是否为另外一个字符串旋转之后的字符串。

实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 思路如下:先将要左旋的k个字符逆置,然后将k个字符之后的字符逆置,左后将整个字符串逆置。1.逆置字符串的函数void reverse(char …

2026/7/28 17:19:57阅读更多 →
基于线段树的RMQ

基于线段树的RMQ

每个节点维护的是区间的最小值#include <cstdio> #include <iostream> #include <vector> #include <cmath> #include <queue> #include <algorithm> #include <cstring>typedef long long ll; const int INF 1e6; const int maxn…

2026/7/28 17:19:57阅读更多 →
基础Demo_02数据运算符(学习笔记)

基础Demo_02数据运算符(学习笔记)

算术运算图中代码 public class Demo01_YurnSuan {public static void main(String[] args){System.out.println(10 20); // 30System.out.println(10 - 20); // -10System.out.println(10 * 20); // 200System.out.println(10 / 20); // 整数与整数运算,结果还是整数System.o…

2026/7/28 17:19:57阅读更多 →
如何选择适合自己的编程语言?这个操作厉害了

如何选择适合自己的编程语言?这个操作厉害了

Twitter上流传的《编程语言选择指导图》&#xff0c;非常具有参考性。大家可以通过这张图做个小测试&#xff0c;看看自己更适合哪种编程语言。 学习编程&#xff0c;首先要选择一门编程语言&#xff0c;但是初学者往往在这个环节产生迷茫&#xff0c;不知道该如何选择。 下面的…

2026/7/28 17:19:57阅读更多 →
开源一套.NET平台的Excel COM 组件二次封装库

开源一套.NET平台的Excel COM 组件二次封装库

开源一套.NET平台的Excel COM 组件二次封装库 在日常的企业级开发中&#xff0c;Excel 文件的读写是一个高频需求。虽然 .NET 平台提供了多种方式操作 Excel&#xff0c;如 NPOI、EPPlus 或 OpenXML&#xff0c;但在某些场景下&#xff08;如调用 VBA 宏、保留复杂格式、与旧系…

2026/7/28 17:17:57阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →