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

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...