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系列手机达到前所未有…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
Linux系统:进程间通信-匿名与命名管道
本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...
GitHub 常见高频问题与解决方案(实用手册)
1.Push 提示权限错误(Permission denied) 问题: Bash Permission denied (publickey) fatal: Could not read from remote repository. 原因: 没有配置 SSH key 或使用了 HTTPS 而没有权限…...
