【问题标题】:Convert audio from url to base64 in nodejs?在nodejs中将音频从url转换为base64?
【发布时间】:2021-05-22 02:06:45
【问题描述】:

我想向 facebook messenger 发送语音片段,并使用 Google Cloud Speech to text 将其翻译成文本。但是,facebook messenger 格式将 url 设置为文件,我不知道将其转换为 base 64。如果它是 .png 和 .jpg 之类的图像,那很好,有相应的软件包。但我正在尝试转换像 .mp3 和 .m4a 文件这样的音频。是否有任何工具可以与 nodejs 一起使用。

我不希望将音频文件保存为本地文件,因为我正在使用 Google App Engine 部署服务器,这样做只会让事情变得超级复杂。

【问题讨论】:

    标签: javascript node.js facebook audio base64


    【解决方案1】:

    我从here 得到了我需要的东西。虽然问题是关于图像的,但代码似乎运行良好。

    const getBase64 = async (url) => {
        try {
            var result =  await  axios
                .get(url, {
                    responseType: 'arraybuffer'
                })
                .then(response =>  new Buffer.from(response.data, 'binary').toString('base64'))
    
    
            return { data: result}
        }catch (e) {
            return {error: e};
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以查看FileReader API 和可能的AudioData API - 在这两者之间,您应该拥有所需的一切。通过网络发送音频文件,您不会将它们作为 base64 传输。我相信它是二进制或 blob iirc。

      您可以使用 FileReader api - 使用 FileReader.readAsArrayBuffer() 读取您的音频文件,这会将您的文件转换为映射数组。从那里,您可以将其变成一个 blob 对象并将其推送到您需要的任何地方。

                   var uInt8Array     = new Uint8Array(mappedArray);
                   var arrayBuffer    = uInt8Array.buffer;
                   var blob           = new Blob([arrayBuffer]);
                   var url            = URL.createObjectURL(blob);
      

      在使用 Amazon 的 Polly 将文本转换为语音时,我使用了相同的方法

      【讨论】:

        【解决方案3】:
        import mineType from 'mime-types';
        
        const getBase64 = async (url) => {
          try {
            const response = await axios.get(url, { responseType: 'arraybuffer' });
            const base64 = Buffer.from(response.data, 'binary').toString('base64');
            return "data:" + mineType.lookup(url) + ";base64," + base64;
          }catch (e) {
            return "";
          }
        }
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。
        猜你喜欢
        • 2017-05-19
        • 2020-12-08
        • 1970-01-01
        • 2018-12-10
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多