vue 音频组件
一、概述
因项目要求,需要做一个音频播放器。
二、demo
test.vue
-
<template>
-
<div>
-
<img src="../assets/audio-bg.png" alt="">
-
<br>
-
<!-- 此处的ref属性,可以很方便的在vue组件中通过 this.$refs.audio获取该dom元素 -->
-
<audio ref="audio"
-
@pause="onPause"
-
@play="onPlay"
-
@timeupdate="onTimeupdate"
-
@loadedmetadata="onLoadedmetadata"
-
src="https://wdd.js.org/element-audio/static/falling-star.mp3"
-
controls="controls">
-
-
</audio>
-
-
<!-- 音频播放控件 -->
-
<!-- <div>-->
-
<!-- <el-button type="text" @click="startPlayOrPause">{{audio.playing | transPlayPause}}</el-button>-->
-
-
<!-- <el-tag type="info">{{ audio.currentTime | formatSecond}}</el-tag>-->
-
-
<!-- <el-tag type="info">{{ audio.maxTime | formatSecond}}</el-tag>-->
-
<!-- </div>-->
-
</div>
-
</template>
-
-
<script>
-
-
// 将整数转换成 时:分:秒的格式
-
function realFormatSecond(second) {
-
var secondType = typeof second
-
-
if (secondType === 'number' || secondType === 'string') {
-
second = parseInt(second)
-
-
var hours = Math.floor(second / 3600)
-
second = second - hours * 3600
-
var mimute = Math.floor(second / 60)
-
second = second - mimute * 60
-
-
return hours ':' ('0' mimute).slice(-2) ':' ('0' second).slice(-2)
-
} else {
-
return '0:00:00'
-
}
-
}
-
-
export default {
-
data () {
-
return {
-
audio: {
-
// 该字段是音频是否处于播放状态的属性
-
playing: false,
-
// 音频当前播放时长
-
currentTime: 0,
-
// 音频最大播放时长
-
maxTime: 0
-
}
-
}
-
},
-
methods: {
-
// 控制音频的播放与暂停
-
startPlayOrPause () {
-
return this.audio.playing ? this.pause() : this.play()
-
},
-
// 播放音频
-
play () {
-
this.$refs.audio.play()
-
},
-
// 暂停音频
-
pause () {
-
this.$refs.audio.pause()
-
},
-
// 当音频播放
-
onPlay () {
-
this.audio.playing = true
-
},
-
// 当音频暂停
-
onPause () {
-
this.audio.playing = false
-
},
-
// 当timeupdate事件大概每秒一次,用来更新音频流的当前播放时间
-
onTimeupdate(res) {
-
console.log('timeupdate')
-
console.log(res)
-
this.audio.currentTime = res.target.currentTime
-
},
-
// 当加载语音流元数据完成后,会触发该事件的回调函数
-
// 语音元数据主要是语音的长度之类的数据
-
onLoadedmetadata(res) {
-
console.log('loadedmetadata')
-
console.log(res)
-
this.audio.maxTime = parseInt(res.target.duration)
-
}
-
},
-
filters: {
-
// 使用组件过滤器来动态改变按钮的显示
-
transPlayPause(value) {
-
return value ? '暂停' : '播放'
-
},
-
// 将整数转化成时分秒
-
formatSecond(second = 0) {
-
return realFormatSecond(second)
-
}
-
}
-
}
-
</script>
-
-
<style>
-
-
</style>
注意:这里有一张背景图片,大家可以从百度中下载。
效果如下:
这里的功能有几个:开始/暂停,显示音频时长,设置音量大小,设置播放倍数。
关于更多代码的解释,请查看下面的参考链接,里面有详细的描述,这里就不在叙述了。
本文参考链接:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfijcbf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13