簡體   English   中英

JavaScript 將 Blob 轉換為 Float32Array(或其他類型化數組)

[英]JavaScript Convert Blob to Float32Array (or other Typed Arrays)

如何將通過 WebSocket 二進制消息接收到的 blob 轉換為 Float32Array(或其他類型化數組:Uint32、Uint16 等)。

我嘗試使用 FileReader,但“結果”需要很長時間才能可用。 結果必須在下一個接收到的 WebSocket 消息中可用。

如果我可以讓 WebSocket 接收 ArrayBuffer 而不是 Blob,那就行了。 我怎樣才能做到這一點?

找到了解決方案,很簡單。 WebSocket binaryType 默認為 'Blob',將其更改為 ArrayBuffer,然后將數據轉換為其他 TypedArrays 會很快。

var ws = new WebSocket(...);
ws.binaryType = 'arraybuffer';
ws.onmessage = wsevent;

消息處理程序可能如下所示:

var floatArray;
function wsevent(event) {
  if (event.data instanceof ArrayBuffer) {
    floatArray = new Float32Array(event.data);
    return;
  }
  //...handle other ws messages
}

在我的代碼中,我通常在一條消息中發送二進制數據,然后下一條文本消息將使用二進制數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM