0

actionscript 3 に関連する基本的な何かが欠けていると確信していますが、それを使用した経験はあまりありません

私の質問の背景:

マイクから録音された音声は、prop http ベースのプロトコル (Secure Socket を使用) 経由でバックエンドに送信する必要があります。そのために、音声バイトは20 ミリ秒ごと (または使用中のコーデックでは 80 バイト) に「フレーム化」され (つまり、いくつかのフレーミング バイトが記録されたバイトの前に注入され)、オープン ソケット接続を介してプッシュされます。

したがって、それを実現するための最良の方法は、記録されたデータサンプルを、80バイトごとにまだ書き込まれているbytearray Bに保存することだと思いました。

  • B から最後に記録された 80 バイトを読み取る
  • フレーミング バイトを先頭に追加する
  • 結果のバイト配列をソケットからプッシュします

bytearray B から読み取ると、操作によって bytearrya のポインターがリセットされ、新しい voicebyte が入ってくると、ポインターの後のバイトが確実に上書きされますか?

どうすればそれを回避できますか?

ご指摘ありがとうございます。

4

1 に答える 1

0

のポインター(位置)をリセットできるドキュメントの状態に注意してくださいByteArray

ファイル ポインターの現在の位置 (バイト単位) を ByteArray オブジェクトに移動するか、返します。これは、読み取りメソッドの次の呼び出しが読み取りを開始するポイント、または書き込みメソッドが書き込みを開始するポイントです。

そのため、読み取り操作を行う前に をリセットしpositionて、そのように FIFO を管理できます。

しかし、FIFO としてバイト配列を使用すると問題が発生する可能性があると思います。

  • clear()FIFO から読み取ったばかりのバイトを削除する必要がありますが、配列全体をクリアする以外に、それを行う API はありません。
  • マイクからの音が頻繁に入る可能性があるSampleDataEventsため、効率が低下したり問題が発生したりする可能性があります

各 SampleDataEvent から取得した個々の By​​teArray の FIFO (配列を使用) を作成しておく方が簡単な場合があります。

于 2012-08-24T00:39:09.517 に答える