HTML5新增多媒体支持
一、引言
在当今数字化时代,丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持,尤其是在音频和视频方面,为开发者和用户带来了全新的可能性。
二、音频audio标签
2.1 定义与属性详解
<audio>标签用于在网页中嵌入音频内容。可以指定多个音频源文件,以便浏览器根据自身的支持情况选择合适的格式进行播放。
src:音频文件的路径,可以是相对路径或绝对路径。- 例如:
<audio src="music.mp3"></audio>。
- 例如:
controls:如果存在,会显示音频播放的控制界面,包括播放 / 暂停、进度条、音量控制等。- 例如:
<audio src="music.mp3" controls></audio>。
- 例如:
autoplay:如果存在,音频会在页面加载后自动播放。但在很多浏览器中,由于用户体验的考虑,自动播放可能会受到限制,特别是在移动设备上。- 例如:
<audio src="music.mp3" autoplay></audio>。
- 例如:
loop:如果存在,音频会循环播放。- 例如:
<audio src="music.mp3" loop></audio>。
- 例如:
muted:如果存在,音频会以静音状态播放。- 例如:
<audio src="music.mp3" muted></audio>。
- 例如:
preload:用于指定音频在页面加载时的预加载行为,可以设置为none(不预加载)、metadata(仅预加载音频的元数据,如时长等)或auto(尽可能地预加载音频数据)。- 例如:
<audio src="music.mp3" preload="metadata"></audio>。
- 例如:
2.2 特点与优势
- 原生支持:无需依赖第三方插件,如 Flash,即可在浏览器中播放音频。这提高了兼容性和安全性,减少了插件安装带来的麻烦。
- 控制界面:通过设置
controls属性,可以显示音频播放的控制界面,包括播放 / 暂停、音量调节、进度条等,方便用户操作。 - 多种音频格式支持:可以指定不同的音频格式,以适应不同的浏览器和设备。常见的音频格式包括 MP3、Ogg Vorbis 等。
2.3 JavaScript API
可以通过 JavaScript 对音频进行控制。例如,var audio = document.getElementsByTagName('audio')[0]; audio.play();可以实现播放音频的功能,并且还能监听音频的各种事件,如onplay(播放开始)、onpause(播放暂停)和onended(播放结束)等,以实现更复杂的交互。
2.4 兼容性
音频格式支持:
- MP3 格式:大多数主流浏览器都支持,包括 Chrome、IE9 及以上版本(IE9 之前版本不支持)、Firefox 等。但是,在一些较旧的移动端浏览器或者特定的浏览器版本中,可能会存在播放问题。
- OGG 格式:Chrome、Firefox、Opera 等浏览器支持较好,但 Safari 浏览器不支持。
- WAV 格式:只有 Firefox 和 Opera 浏览器支持,Chrome、IE 和 Safari 均不支持。
浏览器功能特性:
- 在较新的浏览器版本中,
<audio>标签的基本功能如播放、暂停、音量调节等都能正常使用,但在一些旧版本浏览器中可能会存在功能缺失或显示异常的情况。 - 对于自动播放属性
autoplay,在移动端浏览器上的支持情况较为复杂。例如,iOS 端的 Safari 浏览器以及部分安卓手机的浏览器出于用户体验和节省流量的考虑,不支持自动播放功能,需要用户手动触发播放操作。 - 在预加载属性
preload的支持上,iOS 系统上的 Safari 和微信浏览器可能不支持该属性,需要用户主动触发事件才能进行播放。
2.5 示例
<audio controls><source src="audio.mp3" type="audio/mpeg">你的浏览器不支持音频播放。
</audio>
三、 视频video标签
3.1 定义与属性
<video>标签用于在网页中嵌入视频内容。同样,可以指定多个视频源文件,以确保在不同的环境下都能正常播放。
src:视频文件的路径,可以是相对路径或绝对路径。- 例如:
<video src="video.mp4"></video>。
- 例如:
controls:如果存在,会显示视频播放的控制界面,包括播放 / 暂停、进度条、音量控制、全屏切换等。- 例如:
<video src="video.mp4" controls></video>。
- 例如:
autoplay:如果存在,视频会在页面加载后自动播放。但在很多浏览器中,尤其是在移动设备上,由于用户体验和节省流量的考虑,自动播放可能会受到限制,需要用户交互(如点击)才能触发自动播放。- 例如:
<video src="video.mp4" autoplay></video>。
- 例如:
loop:如果存在,视频会循环播放。- 例如:
<video src="video.mp4" loop></video>。
- 例如:
muted:如果存在,视频会以静音状态播放。- 例如:
<video src="video.mp4" muted></video>。
- 例如:
poster:指定在视频加载前显示的图像,通常是视频的封面图。- 例如:
<video src="video.mp4" poster="cover.jpg"></video>。
- 例如:
preload:用于指定视频在页面加载时的预加载行为,可以设置为none(不预加载)、metadata(仅预加载视频的元数据,如时长、尺寸等)或auto(尽可能地预加载视频数据)。- 例如:
<video src="video.mp4" preload="metadata"></video>。
- 例如:
width和height:用于设置视频的显示宽度和高度。- 例如:
<video src="video.mp4" width="640" height="480"></video>。
- 例如:
3.2 特点与优势
- 更好的用户体验: 原生播放提供更流畅的观看体验,减少了插件可能带来的卡顿和兼容性问题。同时,用户熟悉的控制界面使得操作更加便捷
- 跨平台兼容性: HTML5 视频在各种操作系统和设备上的现代浏览器中都能良好运行,包括桌面电脑、笔记本、平板电脑和智能手机,实现了跨平台的视频播放。
- 易于集成和开发: 作为 HTML 的一部分,
<video>标签可以与其他 HTML 元素和 CSS 样式轻松集成,开发人员可以使用熟悉的 Web 开发技术来创建丰富的视频播放界面和交互效果。 - 搜索引擎优化(SEO): 搜索引擎可以更好地理解和索引包含
<video>标签的网页内容,提高网页在搜索结果中的可见性。 - 响应式设计: 以根据不同的屏幕尺寸和设备自动调整视频的大小和布局,适应响应式网页设计的需求。
3.3 JavaScript API
可以通过 JavaScript 控制视频播放,如var video = document.getElementsByTagName('video')[0]; video.play();,并且能够监听onplay、onpause、onended等事件,用于实现自定义的播放控制和交互逻辑。
3.4 兼容性
视频格式支持:
- MP4(H.264/AAC):
- 广泛支持的格式,在 Safari、Chrome、IE9 及以上版本、Firefox 等主流浏览器中都有较好的兼容性。
- 但是,在一些旧版本的浏览器或者特定的移动端浏览器上可能需要安装额外的编解码器才能正常播放。
- WebM(VP8/Vorbis):
- 主要受到 Chrome、Firefox 和 Opera 等浏览器的支持。
- IE 和 Safari 对 WebM 格式的支持相对较弱。
- Ogg Theora/Vorbis:
- Firefox 和 Opera 支持较好。
- Chrome、IE 和 Safari 可能需要安装插件才能播放 Ogg 格式的视频。
浏览器功能兼容性:
- 播放控制:
- 大多数现代浏览器都提供了基本的播放控制功能,如播放 / 暂停、进度条、音量控制等。但是,不同浏览器的控制界面外观和操作方式可能会有所不同。
- 例如,在 Safari 浏览器中,视频播放时可能不会自动显示控制条,需要用户鼠标移动到视频上才会出现。
- 自动播放:
- 由于用户体验和安全考虑,浏览器对视频的自动播放行为有不同的限制。
- 在桌面浏览器上,一些浏览器可能会阻止视频自动播放,除非用户与页面进行了交互(如点击)。在移动端浏览器上,自动播放通常受到更严格的限制,例如 iOS 上的 Safari 浏览器默认禁止自动播放,除非满足特定条件(如视频静音、用户触发播放等)。
- 全屏播放:
- 不同浏览器对视频全屏播放的实现方式和兼容性也有所不同。
- 在一些浏览器中,全屏播放可能会受到安全策略的限制,例如在某些情况下需要用户明确授权才能进入全屏模式。
- 预加载:
<video>标签的preload属性用于控制视频在页面加载时的预加载行为。不同浏览器对这个属性的处理也不一致。- 一些浏览器可能会根据用户的网络连接情况和浏览器设置来决定是否预加载视频,而另一些浏览器可能会严格按照
preload属性的值进行预加载。
3.5 示例
<video controls><source src="video.mp4" type="video/mp4">你的浏览器不支持视频播放。
</video>
<script>
var video = document.querySelector('video');
video.addEventListener('play', function() {console.log('视频开始播放');
});
</script>
四、多媒体支持的综合优势
- 原生支持,安全可靠:无需依赖第三方插件(如 Flash)播放音频和视频,减少了安全风险和兼容性问题。插件可能存在安全漏洞,且不同浏览器对插件的支持程度不同。
- 跨平台兼容,一致体验:HTML5 的多媒体功能在各种主流操作系统和设备上的现代浏览器中都能正常工作,为用户提供一致的体验。
- 语义化与 SEO 友好:多媒体标签使网页结构更加语义化,搜索引擎能更好地理解网页内容,有助于提高网页在搜索结果中的排名。
- 增强用户体验,丰富多样:方便创建具有音频和视频的网页,可应用于在线教育、视频分享、游戏开发等众多领域,为用户提供更丰富、更具交互性的体验。
相关文章:
HTML5新增多媒体支持
一、引言 在当今数字化时代,丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持,尤其是在音频和视频方面,为开发者和用户带来了全新的可能性。 二、音频audio标签 2.1 定义与属性详解 <a…...
K8S群集调度二
一、污点(Taint) 和 容忍(Tolerations) 1.1、污点(Taint) 设置在node上是对pod的一种作用 节点的亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点 而Taint 则相反,它使节点能够排斥一类特…...
43.第二阶段x86游戏实战2-提取游戏里面的lua
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…...
debian系统安装qt的时候 显示xcb相关文件缺失
如果是安装之后的问题 我们可以选择使用ldd的命令查看当前依赖的so那些文件确实 ldd /home/yinsir/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so 本人在进行打包的时候 出现则会个报错 ERROR: ldd outputLine: “libxcb-util.so.1 > not found” ERROR: for binary: “/…...
得物多模态大模型在重复商品识别上的应用和架构演进
重复商品治理介绍 根据得物的平台特性,同一个商品在平台上不能出现多个链接,原因是平台需要保证一品一链的特点,以保障商品的集中竞价,所以说一个商品在整个得物平台上只能有一个商详链接,因此我们需要对一品多链的情…...
基于 SSM(Spring + Spring MVC + MyBatis)框架构建电器网上订购系统
基于 SSM(Spring Spring MVC MyBatis)框架构建电器网上订购系统可以为用户提供一个方便快捷的购物平台。以下将详细介绍该系统的开发流程,包括需求分析、技术选型、数据库设计、项目结构搭建、主要功能实现以及前端页面设计。 需求分析 …...
应用插件化及其进程关系梳理
插件应用的AndroidManifest.xml <manifest xmlns:android"http://schemas.android.com/apk/res/android"coreApp"true"package"com.demo.phone"android:sharedUserId"android.uid.phone"><uses-sdk android:minSdkVersion&q…...
Odoo:免费开源的医药流通行业信息化解决方案
文 / 开源智造Odoo亚太金牌服务 方案概述 开源智造Odoo免费开源ERP提供面向医药批发采、供、销业财一体化,及直接面向消费者的门店终端、全渠道管理、营销管理以及GSP合规管理解决方案,提升企业运营效率和全业务链条的数字化管控、追溯能力。 行业的最新…...
系统架构设计师论文:大数据Lambda架构
论文一:大数据Lambda架构 1简要说明你参与开发的软件项目,以及你所承担的主要工作 2 lamada体系架构将数据流分为批处理层(Batch Layer)、加速层(Speed Layer)、服务层(Serving Layer)。简要叙述这三个层次的用途和特点 3 详细阐述你参与开发的软件项目是如何基于lamada…...
亚信安全新一代WAF:抵御勒索攻击的坚固防线
近年来,勒索攻击已成为黑客的主要攻击手段。新型勒索攻击事件层出不穷,勒索攻击形势愈发严峻,已经对全球制造、金融、能源、医疗、政府组织等关键领域造成严重危害。如今,勒索攻击手段日趋成熟、攻击目标愈发明确,模式…...
Flutter 中的那些设计模式的写法(持续更新)
前言 我们都知道设计模式是相同的,同一种设计模式的理念不会因为语言不同而会有所改变,但是由于语法的差异,设计模式的写法也有所差异,本文会介绍一些flutter中常用设计模式的写法以及使用场景。 常见的设计模式有23种࿰…...
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
需求梳理 背景 当前我们在IDE或MySQL查询工具中只能进行个人使用,缺乏共享功能,且在查询及数据统计上有一定的不便。为了改善这种情况,计划搭建一个Web平台,通过后台交互来提升效率。此平台需要兼容Python工具和SQL工具的管理、执…...
Linux系列-进程的状态
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 操作系统就是计算机领域的哲学,是为了保证在所有情况下都适用,加载到内存叫做新建状态。 并行和并发 计算机同时进行多个任务,在用户感知的…...
SpringBoot项目中常用的一些注解
一、核心注解 SpringBootApplication 作用:标注一个主程序类,表明这是一个Spring Boot应用程序的入口。说明:这是一个复合注解,组合了Configuration、EnableAutoConfiguration和ComponentScan。 EnableAutoConfiguration 作用&…...
【网络】自定义协议——序列化和反序列化
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是序列化和分序列,并且自己能手撕网络版的计算器。 > 毒鸡汤:有些事情,总是不明白,所以我不…...
Pytorch如何精准记录函数运行时间
0. 引言 参考Pytorch官方文档对CUDA的描述,GPU的运算是异步执行的。一般来说,异步计算的效果对于调用者来说是不可见的,因为 每个设备按照排队的顺序执行操作Pytorch对于CPU和GPU的同步,GPU间的同步是自动执行的,不需…...
使用 Java 实现邮件发送功能
引言 1. JavaMail API 简介 2. 环境准备 2.1 Maven 依赖 2.2 Gradle 依赖 3. 发送简单文本邮件 4. 发送 HTML 邮件 5. 发送带附件的邮件 6. 注意事项 引言 在现代应用开发中,邮件发送功能是非常常见的需求,例如用户注册验证、密码重置、订单确认…...
html第一个网页
创建你的第一个HTML网页是一个激动人心的步骤。以下是创建一个简单网页的基本步骤和代码示例: 基础结构:所有的HTML文档都应该包含以下基本结构。 <!DOCTYPE html> <html> <head><title>我的第一个网页</title> </he…...
前后端交互接口(三)
前后端交互接口(三) 前言 前两集我们先做了前后端交互接口的约定以及浅浅的阅读了一些proto代码。那么这一集我们就来看看一些重要的proto代码,之后把protobuffer给引入我们的项目当中! gateway.proto 我们来看一眼我们的网关…...
华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战
Mate 70系列要来了 上个月,vivo、小米、OPPO、荣耀等众多智能手机制造商纷纷发布了他们的年度旗舰产品,手机行业内竞争异常激烈。 同时,华为首席执行官余承东在其个人微博上透露,Mate 70系列将标志着华为Mate系列手机达到前所未有…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
