Я пытаюсь создать объект Audio на хуке "create ()":
this.sound = new Audio(this.soundURL_prop);
, где this.soundURL_prop - это свойство компонента Vue.js, похожее на: "data: audio/ wav; base64, UklGRrrlLwBXQVZFZm10IBAAAAABAA… "
Чем я хочу вычислить продолжительность звука:
this.sound.onloadedmetadata = () => {
console.log(this.sound.duration);
}
В Chrome v. 73.0.3683.103 он работает нормально и показывает правильную продолжительность, нов Firefox его нет.
Когда я создаю новый Audio (this.soundURL_prop) во второй раз во время выполнения того же кода, Firefox также показывает правильную длительность.
Я думал, что это может зависеть от readyState, но это тоже не помогло.
this.sound.onloadedmetadata = () => {
if (this.sound.readyState === 4) {
console.log(this.sound.duration);}
}
Эта версия работает во всех браузерах:
this.sound = new Audio(URL.createObjectURL(this.b64toBlob(this.soundURL_prop.replace(/^data:(audio)\/(wav);base64,/, ""))));
Но я не понимаю, почему первая версия не работает каждый раз правильно.