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

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...