如何在NodeJS中使用require从本地文件创建Blob?

4

我可以帮忙翻译,请问需要翻译什么内容呢?

我使用 Webpack,有一个音频文件,这是我如何加载它的:

const file = require('@/assets/filename.mp3')
const blob = new Blob(file) // it doesn't work

现在我需要从中获取Blob .. 我不知道如何做到这一点。

最终目标是获得audioBuffer

谢谢任何答案


1
很遗憾,它不是那样工作的。你需要通过AJAX从服务器获取MP3文件。 - Emiel Zuurbier
1个回答

2
使用 Fetch API 从服务器请求文件。然后将其作为 ArrayBuffer 读取,并使用 BaseAudioContext.decodeAudioData() 方法将其解码为 AudioBuffer
/**
 * Get a file, read it as an ArrayBuffer and decode it an AudioBuffer.
 * @param {string} file
 * @returns {Promise<AudioBuffer>}
 */
const fetchAudioBuffer = async file => {
  const audioContext = new AudioContext();

  try {
    const response = await fetch(file);
    const arrayBuffer = await response.arrayBuffer();
    return audioContext.decodeAudioData(arrayBuffer);
  } catch (error) {
    console.error(error);
  }
};

// Fetch the file and decode it as an AudioBuffer.
fetchAudioBuffer('path/to/assets/filename.mp3').then(audioBuffer => {
  // Use your audioBuffer here.
});

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