(controls属性告诉浏览器要有基本播放控件)
原文:HTML5 - 使用<audio>播放音频
<audio src="hangge.mp3" controls></audio>
2,预加载媒体文件
设置preload不同的属性值,可以告诉浏览器应该怎样加载一个媒体文件:
(1)值为auto:让浏览器自动下载整个文件
(2)值为none:让浏览器不必预先下载文件
(3)值为metadata:让浏览器先获取音频文件开头的数据块,从而足以确定一些基本信息(比如音频的总时长)
<!-- 用户点击播放才开始下载 -->
<audio src="hangge.mp3" controls preload="none"></audio>
3,自动播放
使用autoplay属性可以让浏览器加载完音频文件后立即播放。(如果想用来作为背景音乐的话可以把controls属性去掉)
<audio src="hangge.mp3" controls autoplay></audio>
4,循环播放
使用loop属性让音乐播放结束时,在从头开始播放。
<audio src="hangge.mp3" controls loop></audio>
有时我们需要使用js来控制播放器实现音乐的播放,暂停。或者使用js播放一些音效。
1,通过JavaScript控制页面上的播放器
比如把页面上添加一个<audio>用来播放背景音乐(由于controls属性未设置,我们是看不见播放界面的)
<audio id="bgMusic">
<source = src="hangge.mp3" type="audio/mp3">
<source = src="hangge.ogg" type="audio/ogg">
</audio>
通过pause()和play()方法可以使音乐暂停和继续播放(结合currentTime属性可以实现停止和重新播放)
var audio = document.getElementById("bgMusic")
//播放(继续播放)
audio.play()
//暂停
audio.pause()
//停止
audio.pause()
audio.currentTime = 0
//重新播放
audio.currentTime = 0
audio.play()
2,也可以动态的创建<audio>元素
//方式1
var audio = document.createElement("audio")
audio.src = "hangge.mp3"
audio.play()
//方式2
var audio = new Audio("hangge.mp3")
audio.play()
通过canPlayType()方法可以判断浏览器支持的编码方式,从而设置对应的音频文件。
if (audio.canPlayType("audio/mp3")) {
audio.src = "hangge.mp3"
}else if(audio.canPlayType("audio/ogg")) {
audio.src = "hangge.ogg"
}
5.背景音乐&音效
H5页面要炫酷,画面生动还是不够的,一定要配合生动的音乐。因此可以主动跟设计或产品沟通,让他们可以提供音乐资源,分分钟导致UV猛涨有木有!当然,有了音乐,前端也不是直接引用的,还是有点要求:
1.音乐不宜过长,30s为佳,而且音乐要加上渐现渐隐效果,方便循环播放
2.音乐体积要小,音质和流量,在手机上还是优先考虑流量吧。
一般背景音乐体积可以接受的范围是200K以下,若太大,可以使用格式工厂等软件,降低它的比特率和声道来改变体积。接着,只需要简单引用。这里有个问题,IOS是不能自动播放音乐的,一定要触发一个用户交互事件,例如点击。
但是有一种hack的方法可以让IOS微信侧页面自动播放(SAFARI依旧无效):通过new一张图片,监听一张图片的onload事件,结束后回调执行音频播放audio.play()即可,原理估计是动了dom结构,相当于执行了一次交互。(有人也用过createEvent模拟,原理也是动了dom。)因此,记得暴露一个音乐关闭/打开的按钮,不然肯定被用户骂死。
6.有趣的loading
Loading页还是要有的,万一用户网速慢呢?以上做了那么多事,如果没有资源加载都是玩不来的,因此还需要一个loading的支持。一般情况下页面体积大于3m则要加上loading页。然而loading还是可以做得很有趣的,一般的做法是:
1.引入品牌,例如APP宣传页
2.引入有趣动画,放一个贱贱的人物跳舞给你看
3.一切从简,用CSS3简单动画。
当然,真正要做到高效制作动态H5页面,还是靠积累,因此平时做好的细节动画自己都积累起来,下次分分钟就能用得上。
OGG只是封装格式,一个容器,里面也可以配很多媒体格式流,只是OGG是开放源项目,其分流器是开源软件,而且也配有自己专用的音视频流编解码标准,同样也是开源的。可以理解为和mkv,mp4,avi同一原理。http://zh.wikipedia.org/wiki/OggOgg是一个自由且开放标准的容器格式,由Xiph.Org 基金会所维护。Ogg格式并不受到软件专利的限制,并设计用于有效率地流媒体和处理高品质的数字多媒体。在Ogg的多媒体框架下,Theora提供有损的图像层面,而通常用音乐导向的Vorbis编解码器作为音效层面。针对语音设计的压缩编解码器Speex和无损的音效压缩编解码器FLAC与OggPCM也可能作为音效层面使用。