|
@@ -15,7 +15,6 @@ export default function useAudio(url, playEnd = () => {}) {
|
|
|
let audioDom: any = document.createElement('audio')
|
|
|
audioDom.setAttribute('src', url)
|
|
|
audioDom.setAttribute('crossorigin', 'anonymous')
|
|
|
- // audioDom.
|
|
|
document.body.appendChild(audioDom)
|
|
|
// 创建分析器节点
|
|
|
state.analyser = audioContext.createAnalyser()
|
|
@@ -51,67 +50,6 @@ export default function useAudio(url, playEnd = () => {}) {
|
|
|
audioDom.onended = () => {
|
|
|
stop()
|
|
|
}
|
|
|
- // const init = async () => {
|
|
|
- // try {
|
|
|
- // const audioContext = new window.AudioContext()
|
|
|
- // console.log(audioContext)
|
|
|
- // // 获取音频文件
|
|
|
- // const response = await fetch(url)
|
|
|
- // const arrayBuffer = await response.arrayBuffer()
|
|
|
- // const audioBuffer = await audioContext.decodeAudioData(arrayBuffer)
|
|
|
- // // 创建音频源
|
|
|
- // state.source = audioContext.createBufferSource()
|
|
|
- // state.source.buffer = audioBuffer
|
|
|
- // state.source.onended = () => {
|
|
|
- // console.log(444)
|
|
|
- // cancelAnimationFrame(state.animationId)
|
|
|
- // playEnd()
|
|
|
- // }
|
|
|
- // // 创建分析器节点
|
|
|
- // state.analyser = audioContext.createAnalyser()
|
|
|
- // state.analyser.fftSize = 256
|
|
|
- // state.dataArray = new Uint8Array(state.analyser.frequencyBinCount)
|
|
|
- // // 连接节点:源 -> 分析器 -> 目的地(扬声器)
|
|
|
- // state.source.connect(state.analyser)
|
|
|
- // state.analyser.connect(audioContext.destination)
|
|
|
- // // 开始播放
|
|
|
- // console.log(state.source)
|
|
|
- // // 开始音量检测循环
|
|
|
- // updateVolume()
|
|
|
- // resolve({
|
|
|
- // volume,
|
|
|
- // play: () => {
|
|
|
- // // 如果是从暂停恢复播放
|
|
|
- // if (state.pauseTime > 0) {
|
|
|
- // console.log(state.pauseTime)
|
|
|
- // state.source = audioContext.createBufferSource()
|
|
|
- // state.source.buffer = audioBuffer
|
|
|
- // state.source.connect(state.analyser)
|
|
|
- // console.log(Math.min(0, state.pauseTime - 1))
|
|
|
- // state.source.start(0, state.pauseTime - 1)
|
|
|
- // updateVolume()
|
|
|
- // } else {
|
|
|
- // state.source.start(0)
|
|
|
- // }
|
|
|
- // },
|
|
|
- // stop: () => {
|
|
|
- // state.source.stop()
|
|
|
- // state.source.disconnect()
|
|
|
- // },
|
|
|
- // pause: () => {
|
|
|
- // state.pauseTime = audioContext.currentTime
|
|
|
- // // 停止当前播放
|
|
|
- // state.source.stop()
|
|
|
- // state.source.disconnect()
|
|
|
- // },
|
|
|
- // })
|
|
|
- // } catch (err: any) {
|
|
|
- // ElMessage.error('无法播放音频: ' + err.message)
|
|
|
- // console.error('音频播放异常:', err)
|
|
|
- // reject(err)
|
|
|
- // }
|
|
|
- // }
|
|
|
- // init()
|
|
|
const updateVolume = () => {
|
|
|
if (!state.analyser) return
|
|
|
state.analyser.getByteFrequencyData(state.dataArray)
|