vue3中實(shí)現(xiàn)音頻播放器APlayer的方法
前言:
vue2的時(shí)候,分享了一個(gè)很好用的插件是vue-aplayer,但是他是不支持vue3的,這里分享vue3使用APlayer來實(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、頁面中引入
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({
// 開啟吸底模式
fixed: {
type: Boolean,
default: false
},
// 開啟迷你模式
mini: {
type: Boolean,
default: false
},
// 音頻自動播放
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音樂, kugou-酷狗, xiami-小米音樂, baidu-百度音樂)
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'
},
// 存儲播放器設(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目使用高德地圖時(shí)報(bào)錯:AMap?is?not?defined解決辦法
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目使用高德地圖時(shí)報(bào)錯:AMap?is?not?defined的解決辦法,"AMap is not defined"是一個(gè)錯誤提示,意思是在代碼中沒有找到定義的AMap,需要的朋友可以參考下2023-12-12
圖片預(yù)覽插件vue-photo-preview的使用示例詳解
這篇文章主要介紹了圖片預(yù)覽插件vue-photo-preview的使用,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn)
這篇文章主要介紹了ElementUI中el-tree節(jié)點(diǎn)的操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
vue實(shí)現(xiàn)歌手列表字母排序下拉滾動條側(cè)欄排序?qū)崟r(shí)更新
這篇文章主要介紹了vue實(shí)現(xiàn)歌手列表字母排序,下拉滾動條側(cè)欄排序?qū)崟r(shí)更新,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09

