2016-05-23 179 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斑點陣列緩衝器。