3

注:エラー #2084 - 引数の AMF エンコーディングは 40K を超えることはできません 。私の問題は異なります。私の配列は 0 ではなく、40960 未満です。

私のコードは単純なものです。このリンクからこの mp3 レコーディング fla を取得しました: http://www.jordansthings.com/blog/?p=5 これは、shinemp3 エンコーダーを使用します。

録音した音を保存するのではなく、再生したかっただけです。そこで、録音したファイルを保存するボタンに以下を追加しました。

private function onWavClick(e:MouseEvent)
    {           
        // WRITE ID3 TAGS
        var sba:ByteArray = mp3Encoder.mp3Data;
        sba.position =  sba.length - 128
        sba.writeMultiByte("TAG", "iso-8859-1");
        sba.writeMultiByte("Microphone Test 1-2, 1-2      "+String.fromCharCode(0), "iso-8859-1");  // Title
        sba.writeMultiByte("jordansthings                 "+String.fromCharCode(0), "iso-8859-1");  // Artist           
        sba.writeMultiByte("Jordan's Thingz Bop Volume 1  "+String.fromCharCode(0), "iso-8859-1");  // Album        
        sba.writeMultiByte("2010" + String.fromCharCode(0), "iso-8859-1");                          // Year
        sba.writeMultiByte("www.jordansthings.com         " + String.fromCharCode(0), "iso-8859-1");// comments
        sba.writeByte(57);                                                                      

        //new FileReference().save(sba, "FlashMicrophoneTest.mp3") // this saves the file. I don't need it.
        // my addition
        var snd:Sound = new Sound();
        var channel:SoundChannel = new SoundChannel();
        trace(sba.length);
        snd.loadCompressedDataFromByteArray(sba,sba.length);

        channel = snd.play();
    }

さらに、これが機能しても... 40Kを超える配列をロードできませんか???

4

2 に答える 2

3

を呼び出す前loadCompressedDataFromByteArrayに、ByteArray の位置を 0 に設定する必要があります。次に例を示します。

sba.position = 0;
snd.loadCompressedDataFromByteArray(sba,sba.length);

私のアプリケーションではbytesAvailable、ByteArray の が 0 であることに気付きました。これは、ByteArray の位置が ByteArray の末尾にあったためです。40K を超えていないのに超えていると表示されるため、エラー メッセージはわかりにくくなっています。ByteArray からロードするものは何もないと言っているはずです。

また、40K を超える ByteArrays をロードできることも確認できます。126KB mp3 ByteArray でテストしました。

于 2013-10-01T18:08:00.193 に答える
0

私の場合、問題は読み取りたい ByteArray のサイズではありませんでした。私は 30 Mb の mp3 ファイルを問題なく読み込んで再生していました (かなりの量ですよね!)。問題は、ファイルを何度も読み込んでいて、最初の ByteArray の位置が最後にあることでした。そのため、その byteArray を読み取りたいときはいつでも位置を 0 に戻す必要があります。セキュリティのために、それは良い習慣だと思います。

于 2015-03-11T16:29:51.267 に答える