【发布时间】:2019-03-21 15:06:22
【问题描述】:
所以,我想做的是在下载音频文件时播放它,我面临的问题是音频播放器播放音频但只有在它完成下载后,这是我的代码:
音频标签
<audio controls preload="all" muted="muted" > </audio>
这是我的 JS
var audio = document.querySelector('audio');
var assetURL = 'url/audios/file';
var token = 'Bearer token'
var mimeCodec = 'audio/wav';
var mediaSource = new MediaSource;
audio.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen);
function sourceOpen(_) {
const playPromise = audio.play();
console.log(this.readyState);
var mediaSource = this;
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
fetchAB(assetURL, function (buf) {
sourceBuffer.addEventListener('updateend', function (_) {
mediaSource.endOfStream();
audio.play();
console.log(mediaSource.readyState); // ended
});
sourceBuffer.appendBuffer(buf);
});
};
function fetchAB(url, cb) {
console.log(url);
var xhr = new XMLHttpRequest;
xhr.open('get', url);
xhr.setRequestHeader('Authorization', token);
xhr.responseType = 'arraybuffer';
xhr.onload = function () {
cb(xhr.response);
};
xhr.send();
};
我不太清楚怎么做,任何帮助将不胜感激
【问题讨论】:
-
除了播放之外,您还需要下载文件的二进制内容吗?
-
不,只是同时播放音频和下载
-
你能创建一个简单的演示并提供一个链接吗?
标签: javascript audio html5-audio web-audio-api