使用JavaScript将音频文件转换为Base64

7

我希望只使用Javascript,将音频文件转换为base64格式。

我们可以使用画布将图片转换为base64格式。但是,如何将音频文件转换呢?

非常感谢您的帮助。


你为什么想要使用Base64?是用于传输还是本地存储?另外,你的文件来源是从URL还是客户端电脑? - Remy Grandin
可能重复:https://dev59.com/gmEh5IYBdhLWcg3w6HEG请仅返回翻译后的文本。 - Niddro
为什么要使用Base64?有什么限制吗? - Abhinav Gauniyal
不完全正确。将文件转换为字节数组也可以起作用。但我不知道如何做到这一点。 - venky
1
其实这不是重复的问题,我是在问如何以编程方式实现。 - venky
显示剩余3条评论
2个回答

6

你可以尝试下面的代码,它使用了btoa

function getData(audioFile, callback) {
    var reader = new FileReader();
    reader.onload = function(event) {
        var data = event.target.result.split(',')
         , decodedImageData = btoa(data[1]);                    // the actual conversion of data from binary to base64 format
        callback(decodedImageData);        
    };
    reader.readAsDataURL(audioFile);
}

我也遇到了同样的问题,将音频数据转换为base64字符串。@mido btoa()是用于将字符串转换为base64而不是音频数据。如果您能提供基于base64的音频编码将会很有帮助。 - dinu0101

0
这里是如何使用JavaScript将音频文件转换为base64字符串的方法:
async function audioToBase64(audioFile) {
  return new Promise((resolve, reject) => {
    let reader = new FileReader();
    reader.onerror = reject;
    reader.onload = (e) => resolve(e.target.result);
    reader.readAsDataURL(audioFile);
  });
}

您可以像这样使用它:

<input oninput="audioToBase64(this.files[0]).then(result => console.log(result))" type="file">

当在文件选择器中选择文件时,这将会console.log一个类似于data:audio/mpeg;base64,//uYxAAAAA...的字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接