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:48 阅读更多 →
HttpClient源码解析系列一:概括及使用

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

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

2026/7/28 16:03:48 阅读更多 →
NBM5100A与STM32F732IE的低功耗物联网电源管理方案

NBM5100A与STM32F732IE的低功耗物联网电源管理方案

1. NBM5100A与STM32F732IE的协同工作架构解析在低功耗物联网设备设计中,纽扣电池供电系统面临两个核心挑战:有限的能量储备和瞬间大电流需求。Nexperia的NBM5100A电池寿命增强器与STM32F732IE微控制器的组合,为这一难题提供了创新解决方案。这…

2026/7/29 17:33:32 阅读更多 →

最新新闻

MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案

MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案

MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://g…

2026/7/29 17:33:27 阅读更多 →
企业接入大模型 API 的成本把控

企业接入大模型 API 的成本把控

为什么企业接入 AI 的第一道门槛是成本,不是技术技术选型上,把大模型接进现有系统并不复杂:换一个 base_url、换一把 key,SDK 代码基本不用动。真正卡住落地的往往是另一件事——预算部门问「这个月要花多少钱」,而技术…

2026/7/29 17:33:27 阅读更多 →
Claude Code 离线安装方案揭秘:从零到一构建私有化 AI 编程助手

Claude Code 离线安装方案揭秘:从零到一构建私有化 AI 编程助手

一、 引言:为什么需要离线安装 Claude Code?简要介绍 Claude Code 及其核心价值,分析企业/开发者对离线部署的三大核心需求:数据安全、网络限制、成本与性能优化。二、 核心概念与准备工作明确离线安装涉及的关键组件与前置条件。…

2026/7/29 17:33:26 阅读更多 →
3分钟永久解锁IDM:零基础小白也能掌握的免费激活终极方案

3分钟永久解锁IDM:零基础小白也能掌握的免费激活终极方案

3分钟永久解锁IDM:零基础小白也能掌握的免费激活终极方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager&#xff…

2026/7/29 17:33:26 阅读更多 →
PalEdit:5分钟打造你的专属帕鲁伙伴,全面掌握PalWorld存档编辑技巧

PalEdit:5分钟打造你的专属帕鲁伙伴,全面掌握PalWorld存档编辑技巧

PalEdit:5分钟打造你的专属帕鲁伙伴,全面掌握PalWorld存档编辑技巧 【免费下载链接】PalEdit A simple tool for Editing and Generating Pals within PalWorld Saves 项目地址: https://gitcode.com/gh_mirrors/pa/PalEdit PalEdit是一款专为Pal…

2026/7/29 17:33:26 阅读更多 →
Unlock-Music终极指南:3步解密加密音乐,让所有平台歌曲自由播放

Unlock-Music终极指南:3步解密加密音乐,让所有平台歌曲自由播放

Unlock-Music终极指南:3步解密加密音乐,让所有平台歌曲自由播放 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/w…

2026/7/29 17:32:26 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻