WebAPP开发——H5标签audio(属性和API事件)

hykeda1年前JS560
  1. audio支持的格式


audio 定义音频 格式:mp3 wav ogg

mp3所有浏览器兼容

ogg safari不支持

wav 都支持



js 能帮助生成audio对象 new Audio(); 等同于HTML上面写上audio标签

chrom和Opera都不能直接播放 需要页面上元素交互

<button id='btn'>播放</button>
<script type="text/javascript">
    //console.log(new Audio());
    var myAudio = new Audio();
    myAudio.src = 'data/imooc.wav';
 
    btn.onclick = function(){
    myAudio.play();
};
</script>

2.audio标签属性

20200220104927991.png

autoplay自动播放 只有Chrome和Opera不会自动播放,和video有
区别,有了静音属性也不会自动播放
muted静音
loop循环播放
width/height属性在标签内设置不起作用 ,需要css样式中进行设置

3.audioAPI事件

20200220110246159.png

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <input type="button" id='ipt' name="" value='播放'>
    <input type="button" id='pauseNode' name="" value='暂停'>
    <div id='durationNode'></div>
    <div id='currentNode'></div>
</head>
<body>
<!-- audio 标签 currentTime -->
<script type="text/javascript">
//生成出一个音频对象
var myAudio = new Audio();
//音频地址
myAudio.src = 'data/imooc.mp3';
//音频播放按钮
ipt.onclick = function(){
myAudio.play();
};
//音频暂停按钮
pauseNode.onclick = function(){
myAudio.pause();
};
 
//返回音频的长度
myAudio.addEventListener('canplay',function(){
durationNode.innerHTML = myAudio.duration;
});
 
myAudio.currentTime = '20';
//音频的设置和返回
setInterval(function(){
currentNode.innerHTML = myAudio.currentTime;
},100);
 
//音量的控制
myAudio.volume = '0.5';
</script>
</body>
</html>

20200220110826627.png

currentSrc只能获取,不能设置


seeked seeking 在audio中触发频率相同

timeupdate 播放时触发的事件

volumechange 当音量改变的时候触发

requestFullscreen 全屏 必须使用audio标签 js生成的audio对象不支持

load 重新加载的函数 重新给个src也会重新加载

canplay 准备好的时候出发的事件


//ended
console.log(myAudio.ended)
 
myAudio.addEventListener('ended',function(){
console.log('音频播放结束');
console.log(myAudio.ended)
});
 
//loop 循环
myAudio.loop = true;
 
//playbackRate 设置倍速
myAudio.playbackRate = '15';
console.log(myAudio.playbackRate)
 
//timeupdate
myAudio.addEventListener('timeupdate',function(){
console.log('音频正在播放中...')
});
 
 
//seeked
myAudio.addEventListener('seeked',function(){
console.log('seeked');
sekNum++;
seekedNum.innerHTML = sekNum;
});
 
//seeking
myAudio.addEventListener('seeking',function(){
console.log('seeking');
sekingNum++;
seekingNum.innerHTML = sekingNum;
});
 
//volumechange
myAudio.addEventListener('volumechange',function(){
console.log('音频的声音改变了')
});
 
//全屏
btnScreen.onclick = function(){
myAudio.webkitRequestFullScreen();
};
 
loadBtn.onclick = function(){
myAudio.src='data/imooc.mp3';
//myAudio.load();
};


————————————————

原文链接:https://blog.csdn.net/weixin_39089928/article/details/104406124


标签: audiojs

相关文章

ES6导出、导入模块方式

ES6使用 export 和 import 来导出、导入模块 。export导出的,导入需要用{}var firstName = 'Michael';var lastName = &#...

20个js工具函数助力高效开发

前言日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。1、校验数据类型export const typeOf...

生成随机图片

function getMockImagesURL() { let arr = [200, 250, 300, 350, 400, 450]; const width = arr[...

计算两个经纬度之间的距离

PHP计算:#lng为经度,lat为纬度,一定不要弄错了哦 function distance($lat1, $lng1, $lat2, $lng2){ &...

如何实现精准的setTimeout

setTimeout 是不准的。因为 setTimeout 是一个宏任务,它的指定时间指的是:进入主线程的时间。setTimeout(callback, 进入主线程的时间)所以什么时候可以执...

前端截取视频指定帧为封面的两种方法

前端截取视频指定帧为封面的两种方法

一、使用本地canvas截取我们在网页上传视频后,如果能给视频设置一个封面图,用户体验会比较好,但是如果使用video标签的默认实现,部分浏览器会显示视频的第一帧,有些浏览器则怎么都不会展示;通过创建...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。