vue3中實(shí)現(xiàn)音頻播放器APlayer的方法
前言:
vue2的時(shí)候,分享了一個(gè)很好用的插件是vue-aplayer,但是他是不支持vue3的,這里分享vue3使用APlayer來(lái)實(shí)現(xiàn)一個(gè)播放器的方法。 實(shí)現(xiàn)效果:

官方:
git地址:點(diǎn)我
api地址:點(diǎn)我
實(shí)現(xiàn)步驟:
1、安裝 npm:
npm install aplayer --save
Yarn:
yarn add aplayer
2、頁(yè)面中引入
import APlayer from 'APlayer'; import 'APlayer/dist/APlayer.min.css';
3、具體使用,源代碼
(1)封裝 aPlayer.vue
<template>
<div class="mainPage" ref="playerRef"></div>
</template>
<script setup>
import APlayer from 'APlayer';
import 'APlayer/dist/APlayer.min.css';
import {reactive,nextTick, onBeforeUnmount,getCurrentInstance, onMounted, ref} from 'vue'
const playerRef = ref()
const { proxy } = getCurrentInstance()
const state = reactive({
instance:null
})
// APlayer歌曲信息
class Audio {
// 音頻藝術(shù)家
// artist: String;
// 音頻名稱
// name: String;
// 音頻鏈接
// url: String;
// 音頻封面
// cover: String;
// 歌詞
// lrc: String;
constructor(artist, name, url, cover, lrc) {
this.artist = artist;
this.name = name;
this.url = url;
this.cover = cover;
this.lrc = lrc;
}
}
const props = defineProps({
// 開(kāi)啟吸底模式
fixed: {
type: Boolean,
default: false
},
// 開(kāi)啟迷你模式
mini: {
type: Boolean,
default: false
},
// 音頻自動(dòng)播放
autoplay: {
type: Boolean,
default: false
},
// 主題色
theme: {
type: String,
default: 'rgba(255,255,255,0.2)'
},
// 音頻循環(huán)播放
loop: {
type: String,
default: 'all' //'all' | 'one' | 'none'
},
// 音頻循環(huán)順序
order: {
type: String,
default: 'random' //'list' | 'random'
},
// 預(yù)加載
preload: {
type: String,
default: 'auto' //'auto' | 'metadata' | 'none'
},
// 默認(rèn)音量
volume: {
type: Number,
default: 0.7,
validator: (value) => {
return value >= 0 && value <= 1;
}
},
// 歌曲服務(wù)器(netease-網(wǎng)易云, tencent-qq音樂(lè), kugou-酷狗, xiami-小米音樂(lè), baidu-百度音樂(lè))
songServer: {
type: String,
default: 'netease' //'netease' | 'tencent' | 'kugou' | 'xiami' | 'baidu'
},
// 播放類型(song-歌曲, playlist-播放列表, album-專輯, search-搜索, artist-藝術(shù)家)
songType: {
type: String,
default: 'playlist'
},
// 歌的id
songId: {
type: String,
default: '19723756'
},
// 互斥,阻止多個(gè)播放器同時(shí)播放,當(dāng)前播放器播放時(shí)暫停其他播放器
mutex: {
type: Boolean,
default: true
},
// 傳遞歌詞方式
lrcType: {
type: Number,
default: 3
},
// 列表是否默認(rèn)折疊
listFolded: {
type: Boolean,
default: true
},
// 列表最大高度
listMaxHeight: {
type: String,
default: '100px'
},
// 存儲(chǔ)播放器設(shè)置的 localStorage key
storageName: {
type: String,
default: 'aplayer-setting'
}
})
onMounted(() => {
let str = {
server:props.songServer,
type:props.songType,
id:props.songId
}
proxy.$api.common.getSongSheet(str).then(res=>{
let audioList = res.data.map(value => new Audio(value.author, value.title, value.url, value.pic, value.lrc));
state.instance = new APlayer({
container: playerRef.value,
fixed: props.fixed,
mini: props.mini,
autoplay: props.autoplay,
theme: props.theme,
loop: props.loop,
order: props.order,
preload: props.preload,
volume: props.volume,
mutex: props.mutex,
lrcType: props.lrcType,
listFolded: props.listFolded,
listMaxHeight: props.listMaxHeight,
storageName: props.storageName,
audio: audioList
})
})
// 銷毀
onBeforeUnmount(() => {
state.instance.destroy()
})
})
</script>
<style lang='scss' scoped>
.mainPage{
@include wh(100%,auto);
background: #FCFCFC;
border: 1px solid #E0E0E0;
border-radius: 4px;
}
</style>(2)父組件調(diào)用
<a-player></a-player>
其他:
vue3+ts+aplayer版本:點(diǎn)我
到此這篇關(guān)于vue3中實(shí)現(xiàn)音頻播放器APlayer的文章就介紹到這了,更多相關(guān)vue3音頻播放器APlayer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
手把手教你如何創(chuàng)建一個(gè)VUE項(xiàng)目(超簡(jiǎn)單)
這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建一個(gè)VUE項(xiàng)目的相關(guān)資料,創(chuàng)建vue項(xiàng)目有很多種方式,這里給大家介紹一種非常簡(jiǎn)單的方法,需要的朋友可以參考下2023-08-08
Vue數(shù)據(jù)驅(qū)動(dòng)表單渲染,輕松搞定form表單
這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動(dòng)表單渲染,輕松搞定form表單,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請(qǐng)求的方法
這篇文章主要介紹了vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請(qǐng)求,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
vue實(shí)現(xiàn)圖片加載完成前的loading組件方法
下面小編就為大家分享一篇vue實(shí)現(xiàn)圖片加載完成前的loading組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Vue處理循環(huán)數(shù)據(jù)流程示例精講
這篇文章主要介紹了Vue處理循環(huán)數(shù)據(jù)流程,這個(gè)又是一個(gè)編程語(yǔ)言,?模版語(yǔ)法里面必不可少的一個(gè),?也是使用業(yè)務(wù)場(chǎng)景使用最多的一個(gè)環(huán)節(jié)。所以學(xué)會(huì)使用循環(huán)也是重中之重了2023-04-04
vue實(shí)現(xiàn)滑動(dòng)驗(yàn)證條
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)滑動(dòng)驗(yàn)證條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

