【问题标题】:How to convert .wav response in to blob url so that I can play as audio in client side using javascript如何将.wav响应转换为blob url,以便我可以使用javascript在客户端播放音频
【发布时间】:2018-03-23 10:04:43
【问题描述】:

我正在做一个休息电话,它会给我wavaudio/mpeg 内容类型的响应,类似于

ID3.O��^H��B��F�����^H��B��F���

我想在客户端播放此音频。所以我想为此创建一个 blob URL。

$.ajax({
        url: 'texttospeechnew2?text='+text+'&voice=en-US_AllisonVoice&download=true&accept=audio%2Fmp3',
        type: 'GET',
        //data: params,
        success: function(data) {

            responsefile = data;
             var byteArray = new Uint8Array(responsefile);
            var blob = new Blob(byteArray, { type: "audio/mpeg3" });
            const url = window.URL.createObjectURL(blob);

            console.log(url);


        },
        error: function(data, err) {
            console.log("err");
        }

    });

它给了我 blob url,但格式不正确,无法播放。有人可以帮忙。 谢谢

【问题讨论】:

    标签: javascript html audio blob


    【解决方案1】:

    你必须使用XMLHttpRequest

    xhr = new XMLHttpRequest();
    xhr.open('GET', 'texttospeechnew2?text='+text+'&voice=en-US_AllisonVoice&download=true&accept=audio%2Fmp3', true);
    xhr.responseType = 'blob';
    
    xhr.onload = function(e) {
      if (this.status == 200) {
        const url = window.URL.createObjectURL(this.response);
        console.log(url);
      }
    };
    
    xhr.send();
    

    【讨论】:

    • 嗨...我试过它给了我blob url但无法播放音频...在控制台中出现以下错误。当我打开那个bloburl时无法加载资源:服务器响应状态为416(请求的范围不满足)
    • 你好。它现在工作了,实际上我们提到响应类型为 blob,因此不需要再次创建字节数组并将其转换为 blob
    • 即使这不是必需的 var blob = new Blob(this.response, { type: "audio/mpeg3" });
    • 现在可以了吗?
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2018-03-26
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多