2016-05-23 44 views
2

我在Blob中有一个WAV文件并将其转换为MP3我需要先将其转换为Int16Array(以下面的示例为例:https://github.com/zhuker/lamejs)。如何将Blob转换为Int16Array

E.g.

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); 

这可能吗?

+0

您必须使用FileReader API:http://stackoverflow.com/questions/15341912/how-to-go-from-blob-to-arraybuffer – lipp

回答

2

只要你知道这个数据实际上是16位int个BLOB,那么是的,这是可能的:

  1. 通过FileReader#readAsArrayBuffer阅读BlobArrayBuffer

    var fr = new FileReader(); 
    fr.readAsArrayBuffer(samples); 
    

    ArrayBuffer上可用的FileReader 's result`财产。

  2. 查看经由Int16Array构造的ArrayBuffer作为Int16Array

    var data = new Int16Array(fr.result); 
    

现在data距离看作Int16Array斑点阵列缓冲器。