我正在嘗試使用Web Audio Api爲音樂編寫自定義網絡播放器,但是我遇到了解碼音頻的問題。AudioBuffer無法緩存/ decodeAudioData需要很長時間
我使用AudioContext.decodeAudioData函數從後端獲取.mp3作爲ArrayBuffer並對其進行解碼。
const resp = await fetch(url);
const raw = await resp.arrayBuffer();
const audioBuffer = context.decodeAudioData(raw);
我試圖緩存AudioBuffer在IndexedDB的,但它不是可克隆。我的設備上的解碼需要大約10秒鐘的時間,而且這個時間很長。除了預取和「預解碼」之外,我還有其他選擇來防止歌曲之間漫長的等待時間嗎?
難道您不能將數據作爲流獲取並將其解碼爲部分? – Nit
在部分解碼它似乎相當複雜,因爲javascript時鐘非常不準確。我試過了,但我無法阻止音頻片斷之間的crack ling聲。此外,該文件說:。 「異步解碼包含在ArrayBuffer音頻文件數據在這種情況下,ArrayBuffer通常是從一個XMLHttpRequest的響應屬性加載設置的responseType到arraybuffer後,此方法僅適用於完整的文件,而不是碎片音頻文件「。 https://developer.mozilla.org/de/docs/Web/API/AudioContext – Lucas