Как исправить неправильную ошибку продолжительности звука в Firefox 60.6.1esr? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать объект 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,/, ""))));

Но я не понимаю, почему первая версия не работает каждый раз правильно.

...