HTML5音频audio属性
来源:https://segmentfault.com/a/1190000008932943?utm_source=tuicool&utm_medium=referral
audio 的控制函数主要有:
load()
加载音频、视频软件,通常不必调用,除非是动态生成的元素,用来在播放前预加载play()
加载并播放音频、视频文件,除非文件已经暂停在其他位置,否则默认重头开始播放pause()
暂停处于播放状态的音频、视频文件
audio 的只读媒体特性有:
duration
获取媒体文件的播放时长,以s为单位,如果无法获取,则为NaN
paused
如果媒体文件被暂停,则返回true
,否则返回false
ended
如果媒体文件播放完毕,则返回true
startTime
返回起始播放时间,一般是0.0,除非是缓冲过的媒体文件,并一部分内容已经不在缓冲区error
在发生了错误后返回的错误代码currentSrc
以字符串形式返回正在播放或已加载的文件,对应于浏览器在source
元素中选择的文件
audio 可脚本控制的特性值:
autoplay
自动播放已经加载的的媒体文件,或查询是否已设置为autoplay
loop
将媒体文件设置为循环播放,或查询是否已设置为loop
currentTime
以s为单位返回从开始播放到目前所花的时间,也可设置 currentTime
的值来跳转到特定位置controls
显示或者隐藏用户控制界面volume
在0.0到1.0间设置音量值,或查询当前音量值muted
设置是否静音autobuffer
媒体文件播放前是否进行缓冲加载,如果设置了autoplay
,则忽略此特性
歌曲播放进度
这个功能用到的 audio api
主要有:
currentTime()
:以秒为单位返回从开始播放到目前所花的时间,也可设置 currentTime
的值来跳转到特定位置;duration
:获取媒体文件的播放时长,以秒为单位,如果无法获取,则为 NaN
;
歌曲进度:首先先设置一个定时器,分别获取这两个值,用当前播放的秒数除以歌曲总秒数,再乘以歌曲进度条的总宽度(px
),就能算出歌曲进度条一秒钟可以走多少。
歌曲进度调节:点击进度条的某个位置,歌曲跳转到响应位置,这个功能的实现是先获取到点击的位置距离进度条最左边的长度(让 Firefox
支持 offsetX
、offsetY
),接着获得这段距离在整个进度条的长度里所占的百分比,用这个百分比乘以歌曲的总长度,就能算出该给 currentTime
设置的值。
歌曲时间显示
歌曲显示:在计算歌曲进度的定时器内,不断发送歌曲的播放时间和总时间,左边的时间为歌曲的播放时间,也就是 currentTime
的值,右边的时间用总时间减去 currentTime
,并将它们转换为我们需要的格式即可。
音量的调节
volume
:在0.0到1.0间设置音量值,或查询当前音量值;
音量调节:这个功能实现起来很简单,把 volume
的值设为 0.0,就静音了。在控件上调节音量的原理和也歌曲的进度条一样,判断点击位置距离第一个相对元素 Y 轴上最顶端的位置,然后再进一步计算出具体的数值,注意数值的格式,别超过1,并且小数点后只有1位。
播放列表与播放方式
把整个歌曲文件的信息都写在 json
文件里,获取并生成播放列表。当播放歌曲时,系统会生成当前播放歌曲的引索值(例如:1
,2
,表示第二张专辑的第三首歌,这个很重要,歌曲切换都是基于这个引索值的),当要播放下一曲时,系统会根据当前是什么播放方式(列表循环,单曲循环,随机播放,顺序播放),生成新的引索值,然后通知播放器,下一首该怎么播放,是随机,还是循环,还是播放结束。
同步显示歌词
ajax
获取歌词文件(lrc文件)
用正则分别过滤出歌词和歌词前面对应的时间,存入数组
将歌词的时间和内容遍历存入 HTML
每秒都去判断一下现在歌曲播放的时间,如果和临时数据 data-timeline
里的值一样,就滚动
HTML5音频audio属性的更多相关文章
- HTML5 音频 <audio>
HTML5 提供了播放音频的标准. 一.Web 上的音频 直到现在,仍然不存在一项旨在网页上播放音频的标准. 今天,大多数音频是通过插件(比如 Flash)来播放的.然而,并非所有浏览器都拥有同样的插 ...
- html5音频audio对象封装成vue组件的方式调用以及setTimeout如何在vue2生效 (vue2正在熟悉中,ajax还是用jQuery来写舒服些,里面含有一些php写法可略过) 此网页应用在PC不考虑手机端
// vue2 组件封装如下: <template> <div> <div><!--vue element 组件的引用 Switch 开关 不懂请自行百度(重 ...
- 关于HTML5音频——audio标签和Web Audio API各平台浏览器的支持情况
对比audio标签 和 Web Audio API 各平台浏览器的支持情况: audio element Web Audio API desktop browsers Chrome 14 Yes ...
- html5音频audio对象处理以及ios微信端自动播放和息屏后唤醒的判断---可供参考(功能都完整实现了,只是细节还没处理的很好)
// html模版中的 此处结合了weui样式整合的微信手机端片段代码(不可直接粘贴复制进行使用)里面含有一些php的写法,可直接略过..###重点参考js代码### <div> < ...
- html5 音频和视频(audio And video)
1.音频和视频 Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定 ...
- css总结16:HTML5 多媒体音频(Audio)视频(video )
1 显示嵌入网页中的 MP3 文件: <embed height="50" width="100" src="horse.mp3"&g ...
- 《HTML5》 Audio/Video全解
一.标签解读 <audio> 标签属性 <audio id="media" src="http://www.abc.com/test.mp3" ...
- [js开源组件开发]html5标签audio的样式更改
html5标签audio的样式更改 由于html5的流行,现在移动端大多数的需求都可以使用audio来播放音频,但您可能只是需要很简单的播放/停止效果,但不同的浏览器上的audio样式却不尽人意,所以 ...
- html5的audio实现高仿微信语音播放效果
效果图 前台大体呈现效果图如下: 点击就可以播放mp3格式的录音.点击另外一个录音,当前录音停止! 思路 关于播放动画,这个很简单,我们可以用css3的逐帧动画来实现.关于逐帧动画,我之前的文章也写过 ...
随机推荐
- java中使用MD5进行加密 BASE64Encoder 编码
原文地址:http://www.cnblogs.com/weiwangnuanyang/articles/4326336.html java中使用MD5进行加密 在各种应用系统的开发中,经常需 ...
- nodejs中thiskeyword的问题
再分析详细内容之前,必需要好好阅读下面下面两篇blog 学习Javascript闭包(closure) Javascript的this使用方法 这两篇文章是阮一峰老师对Javascript的闭包和th ...
- 接口隔离原则(Interface Segregation Principle,ISP)
接口隔离原则: 1.使用多个专门的接口比使用单一的总接口要好. 2.一个类对另外一个类的依赖性应当是建立在最小的接口上的. 3.一个接口代表一个角色,不应当将不同的角色都交给一个接口.没有关系的接口合 ...
- jboss中控制台jmx-console 登录的用户名和密码设置
默认情况访问 http://localhost:8080/jmx-console 就可以浏览jboss的部署管理的一些信息,不需要输入用户名和密码,使用起来有点安全隐患.下面我们针对此问题对jboss ...
- 【虚拟化实战】Cluster设计之一资源池
作者:范军 (Frank Fan) 新浪微博:@frankfan7 资源池是Cluster设计中的一个重要概念,本文介绍了为什么用资源池,怎么用好资源池,以及澄清了一些常见的误区. 一概念 每个ESX ...
- go语言之进阶篇JSON处理
一.JSON处理 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成.尽管JSON是JavaScr ...
- 很漂亮的Wince开发控件库Beemobile简介【转】
https://blog.csdn.net/xiaoyong_net/article/details/80467653 官网地址:http://beemobile4.net/products/ipac ...
- Kalman滤波器从原理到实现
Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than the ...
- Flask Restful服务简单实现
官网:http://flask.pocoo.org/docs/1.0/quickstart/#routing 1.安装 windows下:pip3 install Flask 具体参照:windows ...
- 【Spark】Spark Streaming + Kafka direct 的 offset 存入Zookeeper并重用
Spark Streaming + Kafka direct 的 offset 存入Zookeeper并重用 streaming offset设置_百度搜索 将 Spark Streaming + K ...