gpt4 book ai didi

javascript - 如何将 Blob 转换为 Int16Array

转载 作者:行者123 更新时间:2023-11-29 17:58:00 30 4
gpt4 key购买 nike

我在 Blob 中有一个 WAV 文件,为了将其转换为 MP3,我需要先将其转换为 Int16Array(按照此处的示例:https://github.com/zhuker/lamejs)。

例如

var mp3encoder = new lamejs.Mp3Encoder(2, 44100, 128);
// instead of `var samples = new Int16Array(44100);` I want something like `var samples = new Int16Array(blob);`
var mp3Tmp = mp3encoder.encodeBuffer(samples);

这可能吗?

最佳答案

如果您知道数据实际上是 16 位 int 的 blob,那么是的,这是可能的:

  1. 通过 arrayBufferBlob 读入 ArrayBuffer方法 (原来的答案必须使用 FileReader,但现在 Blob 有一个 arrayBuffer 方法;如果出于某种原因,请查看编辑历史记录你必须支持没有它的旧环境):

    samples.arrayBuffer()
    .then(buffer => {
    // ...
    })
    .catch(error => {
    // ...handle/report error...
    });
  2. 通过 Int16Array constructorArrayBuffer 查看为 Int16Array :

    const data = new Int16Array(buffer);

现在 data 是来自被视为 Int16Array 的 blob 的数组缓冲区。

沿着这些线的东西:

samples.arrayBuffer()
.then(buffer => {
const data = new Int16Array(buffer);
// ...use `data` here...
})
.catch(error => {
// ...handle/report error...
});

关于javascript - 如何将 Blob 转换为 Int16Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37394541/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com