如何在 django 中将 blob url 转换为 mp3 音频

Posted

技术标签:

【中文标题】如何在 django 中将 blob url 转换为 mp3 音频【英文标题】:How to convert blob url into mp3 audio in django 【发布时间】:2021-06-19 17:49:45 【问题描述】:

所以我正在使用 Mic recorder API 的浏览器录制音频,现在这个 Api 在录制后返回一个 blob url,我将它发送到我的项目的 django 后端,但问题是如何取回该音频文件来自后端的 blob url?

供您参考,这是它生成 blob url 的方式:

const Mp3Recorder = new MicRecorder( bitRate: 128 );

     stop = () => 
        Mp3Recorder.stop()
          .getMp3()
          .then(([buffer, blob]) => 
            const blobURL = URL.createObjectURL(blob);
            console.log(blobURL);
            this.setState( blobURL, isRecording: false );
            this.sendAudioFile(blobURL);
          )
          .catch((e) => console.log(e));
      ;

这是将 blob url 发送到 django 后端的代码

sendAudioFile = (url) => 
    let data = new FormData();
    data.append("file", url);
    return axios
      .post("http://localhost:8000/recordings/", data, 
        headers: 
          "Content-Type": "multipart/form-data",
        ,
      )
      .then((res) => 
        console.log(res);
        return res;
      );

请提出一个好的解决方案,因为我已经针对类似问题浏览了各种 *** 答案,但问题没有得到解决。

【问题讨论】:

【参考方案1】:

所以我找到了解决这个问题的方法,只需包含这行代码即可将您的 blob url 转换为 mp3/.wav 文件,然后将其发送到后端。

var wavfromblob = new File([blob], "incomingaudioclip.wav");

更多理解请参考此功能代码。

 Mp3Recorder.stop()
      .getMp3()
      .then(([buffer, blob]) => 
        const blobURL = URL.createObjectURL(blob);
        console.log(blobURL);
        var wavfromblob = new File([blob], "incomingaudioclip.wav");

        console.log(wavfromblob);
        const blobmp3 = new Blob();

        this.setState( blobURL, isRecording: false );
        // this.createDownloadLink(blobURL);
        this.sendAudioFile(wavfromblob);
      )
      .catch((e) => console.log(e));

【讨论】:

以上是关于如何在 django 中将 blob url 转换为 mp3 音频的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中将 base64String 转换为 blob 并通过 ajax 发送到控制器?

如何在python,django中将url解码为路径

如何在给定 blob url 的情况下将大型音频文件上传到 django 服务器?

如何在颤动中将 Blob 转换为图像

如何在 JavaScript 中将 Blob 转换为文件

如何在硒 c# 中将 Blob 图像转换为位图图像