0

ASライブラリからオーディオデータを取得しようとしています.ドキュメントから、関数は次のようになります:

protected function audioData():String
        {
            var ret:String="";
            buffer.position = 0;                
            while (buffer.bytesAvailable > 0) 
            {
                ret += buffer.readFloat().toString() + ";";
            }
            return ret;
        }

私のコードとこのライブラリの間には、このコードを持つ別の js があります。

 audioData: function(){
    return this.flashInterface().audioData().split(";");
  },

私のコードから、次のようにアクセスします。

  function getdata(){
    var data = Recorder.audioData();
    console.log("audioData: " + data);
  }

しかし、返された値を Firebug に出力しようとしました。浮動小数点値の非常に長いコンマ区切りのリストを取得しました。byte[] バッファを取得するにはどうすればよいですか? JSNI経由で Java からバッファにアクセスするため、バッファの意味は Java に似ています。

ログ出力の例を次に示します (実際のログは非常に長いです)。

-0.00030517578125,0.00006103515625,0.00115966796875,0.00146484375,-0.00091552734375,-0.000946044921875,-0.001983642578125,-0.003997802734375,-0.005126953125,-0.00360107421875,-0.0032958984375,-0.004119873046875,-0.00433349609375,-0.0023193359375,-0.0008544921875,-0.003448486328125,-0.00347900390625,-0.0054931640625 、-0.0067138671875、-0.005279541015625、-0.006072998046875、

出力を作成する AS を再コンパイルすることはできません。今のところ、javascript で SWF コンポーネントに接続し、その浮動小数点を受け入れてバイト配列に戻すことができます。FDT 5 IDE の AS プロジェクトには、アプリケーションのモックアップを作成する必要があるエラーが多すぎます。

ASライブラリを必要に応じて再コンパイルしたいのですが、今はそのまま使用したいだけです。

4

1 に答える 1

1

バイト配列内の実際のバイトデータを確認する場合は、次を使用できます。

protected function audioData():String
{
   var ret:String="";
   buffer.position = 0;                
   while (buffer.bytesAvailable > 0) 
   {
      ret += buffer.readByte().toString();
   }
   return ret;
}

aFAIK as3のByteArrayクラスはすでにバイト配列です(名前が示すように:))byteArray [0]のように、[]演算子を使用してそのデータにアクセスできます。最初のバイトが得られます。

次のようなPOSTリクエストを使用して、サーバー上のURLにバイト配列を送信できるはずです。

var request:URLRequest = new URLRequest ("http://someurl");
var loader: URLLoader = new URLLoader();
request.contentType = "application/octet-stream";
request.method = URLRequestMethod.POST;
request.data = byteArray;
loader.load(_request);
于 2012-05-07T17:46:04.547 に答える