Expressjs使用node-lame获取远程wav并转为mp3发送至前端

612 阅读1分钟

需要用到的工具:

参考代码:

const express = require('express');
const app = express();
const fetch = require('node-fetch');
const Lame = require("node-lame").Lame;

// 下载音频文件
app.get('/wav-convert-to-mp3', (req, res) => {
  // 参数接收远程音频地址
  let audioUrl = 'https://xxx.wav';
  // 获取wav buffer
  fetch(audioUrl).then(res => res.buffer()).then(buffer => {
    const encoder = new Lame({
      "output": "buffer",
      "bitrate": 192
    }).setBuffer(buffer);

    encoder.encode().then(() => {
      logger.info(`convert wav to mp3: ${path}`)
      const mp3Buffer = encoder.getBuffer();
      res.writeHead(200, {
        'Content-Type': 'application/octet-stream'
      });
      // 发送mp3数据
      res.end(Buffer.from(mp3Buffer, 'binary'));
    })
    .catch((error) => {
      console.log(error)
    });
  })
});