問題タブ [arraybuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3750 参照

javascript - オブジェクト内にラップされたArrayBufferのPOST

サーバーにポストバックできるように、ファイルクライアント側を取得するAJAXを少し作成しました。対象は。としてフェッチされますArrayBuffer。ただし、保存のためにこのバイナリをサーバーにポストバックするときに、このファイルにいくつかのメタデータを含める必要があります。とオブジェクトを他の文字列でラップしようとしましたArrayBufferが、データサーバー側を調べると、の長さしか転送されていないようArrayBufferです。

私はArrayBufferこの答えを介して文字列に変換しようとしました:

https://stackoverflow.com/a/11058858/449511

ただし、私ArrayBufferのバイト長は519843であるため、例外が発生します。

Uncaught RangeError:ArrayBufferの長さからbyteOffsetを引いた値は、要素サイズの倍数ではありません。

私の理解ArrayBuffersはまばらです。MDNドキュメントを読んだことがありますが、他に多くを見つけることができません。ArrayBufferこれを文字列に変換する方法、またはオブジェクトにラップする方法について、さらにリソースやアイデアを提供してくれたことに感謝してArrayBufferいます。

これが私のAJAXコードのスニペットです:

0 投票する
1 に答える
789 参照

javascript - WebSocket と送信時の ArrayBuffers の再利用

Uint8Arrays と ArrayBuffers を使用してバイナリ データを送信しています。毎回新しい Uint8Array と ArrayBuffer を作成することで、正常に送信できます。

パフォーマンス上の目的 (ガベージの削減など) のために、次のメッセージに同じ Uint8Array と ArrayBuffer を再利用したいと考えています。この場合、各メッセージには同じフィールドがあるため、バイト長は問題になりません。上書きするだけです。

ただし、再利用すると、送信されるデータが正しくなくなります。

私の最善の推測は、前のメッセージがまだ送信中である間に、次のメッセージの ArrayBuffer を変更していることです。これが問題ですか?もしそうなら、ArrayBuffer が WebSocket で使用されなくなったことを検出してプールできる方法はありますか? そうでない場合、他に何がこの動作を引き起こす可能性がありますか?

ありがとう!

0 投票する
2 に答える
11361 参照

javascript - Web Audio APIは、さまざまなAudioBufferを追加/連結し、それらを1つの曲として再生します

私はWebAudioAPIで遊んでいて、曲の複数の部分をロードして新しいArrayBufferに追加し、そのArrayBufferを使用してすべての部分を1つの曲として再生しようとしています。次の例では、曲の異なる部分ではなく、同じ曲データ(小さなループ)を使用しています。

問題は、それが2回ではなく1回だけ再生されることであり、その理由はわかりません。

曲をダウンロードする

0 投票する
1 に答える
3652 参照

javascript - javascriptを使用してUint8Arrayを暗号化および復号化するにはどうすればよいですか?

このリンクからCryptoJSライブラリをダウンロードしたため、Uint8Arrayの暗号化と復号化が必要です。

ダミー文字列で aes 暗号アルゴリズムをテストしましたが、正常に動作しています。

今、私はそれを Uint8Array に実装したいと考えています。この配列は、ビデオ ファイル データを保持しています。

暗号化と復号化は文字列で機能するため、スタックオーバーフローに投稿されたこの質問を参照した文字列に変換する必要があります ここをクリック

暗号化のコードは次のとおりです。

しかし、コードを実行すると、次のエラーが発生します。

どうすれば機能しますか?

0 投票する
3 に答える
5896 参照

javascript - javascript単体テスト中にバイナリファイルをロードするにはどうすればよいですか?

私のアプリケーションでは、ユーザーは HTML5 のドラッグ アンド ドロップを使用してバイナリ ファイルを処理します。コードのその部分は正常に機能します。Chrome では、バイナリ ファイルをドラッグし、FileReader を使用して arrayBuffer を作成します。それはすべてうまくいくようです。この機能のテストを作成していますが、途方に暮れています。単体テストにバイナリ ファイルを読み込むにはどうすればよいですか? 私がテストしているコードでは、arrayBuffer だけが必要です。現在、arrayBuffer を手動で作成していますが、それは持続可能な解決策ではありません。テストを有効にするには、いつでも新しいバイナリ ファイルを投入して、新しいテストを作成できる必要があります。私のテスト環境は testacular+jasmine です。

0 投票する
1 に答える
971 参照

javascript - jsでarraybufferと型付き配列を使用するには?

0 から 255 までの数字がたくさんあるので、それらを配列に格納したいと思います。Uint8array が最適ですが、使い方がわかりませんし、役に立つチュートリアルも見つかりません。それらが配列に格納されたら、それらを変更/削除する方法、または新しい要素を追加する方法は?

0 投票する
1 に答える
4976 参照

javascript - どのArrayBufferView

XHRを介してArrayBufferを取得していて、FileWriterを使用してFileSystemAPIに保存したいと思います。FileWriterはBlobを想定しており、BlobコンストラクターはArrayBufferを取得せず、ArrayBufferViewを取得します。

選択できるArrayBufferViewは多数ありますが、どれを使用するのが正しいかをどのように知ることができますか?

0 投票する
0 に答える
866 参照

javascript - データチャネル経由で ArrayBuffer を送信: DOM 例外 12

2 つのブラウザ間でデータチャネルを介してデータを送信しようとしています。私のコードには次のものがあります。

この例では、datachannel が開いていて、正しく機能しています (そのタイプは WebKitDatachannel です)。送信すると、次の例外が表示されます。

それの何が問題なのですか?

0 投票する
2 に答える
28614 参照

javascript - ブラウザで WebSocket ArrayBuffer データを受信 - 代わりに文字列を受信

node.js サーバー アプリケーションとブラウザー クライアントがあります。データの送信ArrayBufferブラウザ -> サーバーは完全に機能しますが、サーバー -> ブラウザでは文字列"[object ArrayBuffer]"が受信されます。これは、Chrome と Firefox の両方の最新バージョンで発生します。

サーバ:

クライアント:

私は何を間違っていますか?

編集:

node.js websocket ソースから:

したがって、 を使用すると、必要に応じてUint8Arrayを使用する代わりに、データを文字列として送信します。以下の回答のように、必要です。to を渡すことができないため、サーバーでこれを行いました。sendBytessendBytesBuffersendBytesArrayBuffersendBytes

今では動作します。

結論:

Chrome と Firefox の websocket.send()Uint8Arrayバッファをバイナリ データとして送信しますが、node.js の websockets はデータとして送信するようで、バイナリを送信するにはバッファstringが必要です。Buffer

0 投票する
7 に答える
164268 参照

javascript - BlobからArrayBufferに移動する方法

私はBlobを研究していましたが、ArrayBufferがある場合、次のようにこれをBlobに簡単に変換できることに気付きました。

私が今持っている質問は、BlobからArrayBufferに移行することは可能ですか?