javascript - 在 Audio Web API 中下载音频文件时播放音频文件

标签 javascript audio html5-audio web-audio-api

所以,我想做的是在下载音频文件时播放它,我面临的问题是音频播放器播放音频,但只有在完成下载后才播放,这是我的代码:

音频标签

<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();
}; 

我不太确定该怎么做,任何帮助将不胜感激

最佳答案

您无法使用 Web Audio API 部分播放音频文件。您应该创建一个 <audio>元素并设置其 src 属性来加载文件,该方法将允许您流式传输文件。

const audio = document.createElement('audio');
audio.src = 'file.wav';
audio.play();

但是,您的示例显示您在加载文件时设置 header ,这不适用于上述方法,因此您应该摆脱它(尽管似乎是规避它的一种方法: Send custom HTTP request header with HTML5 audio tag )

关于javascript - 在 Audio Web API 中下载音频文件时播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283524/

相关文章:

javascript - 抱歉,我从程序员那里得到了这段代码,这段代码有什么作用?

javascript - 为什么 Javascript Replace() 函数不执行任何操作?

java - 使用 Java 声音 API 修剪 WAV 文件的开头和结尾

internet-explorer - audio.currentTime 在 IE9 中不起作用

javascript - 创建像 Spotify 这样的自定义音频播放器的进展如何?

javascript - swiper 插件延迟加载大约 30 到 60 秒

javascript - 如何计算列表中的总计

math - DSP方法来检测可能不是当前声音中最主要的特定频率

javascript - Js 音频音量 slider

html - 音频输出2台设备