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系列手机达到前所未有…...

【安卓13 源码】Input子系统(4)- InputReader 数据处理
1. 多指触控协议 多指触控协议有 2 种: > A类: 处理无关联的接触: 用于直接发送原始数据; > B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新。 B协议可以使用一个ID来标识触点&…...

Xserver v1.4.2发布,支持自动重载 nginx 配置
Xserver——优雅、强大的 php 集成开发环境 本次更新为大家带来了更好的用户体验。 🎉 下载依赖组件时,显示进度条,展示下载进度。 🎉 保存站点信息和手动修改 vhost 配置文件之后,自动重载 nginx 配置 🐞…...

Java反射原理及其性能优化
目录 JVM是如何实现反射的反射的性能开销体现在哪里如何优化反射性能开销 1. JVM是如何实现反射的? 反射是Java语言中的一种强大功能,它允许程序在运行时动态地获取类的信息以及操作对象。下面是一个简单的示例,演示了如何使用反射调用方法ÿ…...

RabbitMQ 管理平台(控制中心)的介绍
文章目录 一、RabbitMQ 管理平台整体介绍二、Overview 总览三、Connections 连接四、Channels 通道五、Exchanges 交换机六、Queues 队列查看队列详细信息查看队列的消息内容 七、Admin 用户给用户分配虚拟主机 一、RabbitMQ 管理平台整体介绍 RabbitMQ 管理平台内有六个模块&…...

【SQL】在 SQL Server 中创建数据源是 MySQL 数据表的视图
背景:Windows系统已安装了mysql5.7和sqlServer数据库,现在需要在sqlServer创建视图或者查询来自mysql的数据,视图的数据来源mysql数据库。下面进行实现在sqlserver实现获取mysql数据表数据构建视图。 1、打开 ODBC 数据源管理器,…...

现代Web开发:Next.js 深度解析与最佳实践
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 现代Web开发:Next.js 深度解析与最佳实践 现代Web开发:Next.js 深度解析与最佳实践 现代Web开发…...

LeetCode题练习与总结:赎金信--383
一、题目描述 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1࿱…...

eval: jdk1.8.0_431/jre/bin/java: Permission denied
当您在启动Tomcat或其他Java应用时遇到“Permission denied”错误,这通常表示当前用户没有执行指定Java可执行文件的权限。以下是解决这个问题的几种方法: 方法一:检查文件权限 查看文件权限: 使用ls -l命令查看Java可执行文件的…...

.Net IOC理解及代码实现
IOC理解 IoC(Inversion of Control):即控制反转,这是一种设计思想,指将对象的控制权交给IOC容器,由容器来实现对象的创建、管理,程序员只需要从容器获取想要的对象就可以了。DI(Dependency Injection),即依…...

履带机器人(一、STM32控制部分--标准库)
一、履带机器人整体逻辑框架 通过在PC端搭建上位机,使得在PC端可以给STM32发送控制指令并且接受STM32的状态信息。 通过RS485通信,使得STM32可以和电机进行通信,STM32发送启动、停止、转速、方向等指令,并接受电机返回的状态信息。 二、STM32逻辑框架 整体逻辑: 1、先…...