2011-11-18 19 views
1

私はRAW PCMオーディオデータを再生するためにフラッシュの能力をたくさん探してきました。私はRAW PCMオーディオをByteArrayとして持っています。いくつかの記事は、はい、いいえ、RAW PCMオーディオがライブソケットストリームから来ていることに注意してください。Flashを使用してライブソケットストリームのPCM生データを再生する

今のところ私は空のSoundオブジェクトを作成し、その後、そのSampleDataEvent.SAMPLE_DATAイベントを処理し、いくつかのコードスニペットの下に、そこからバイトを渡しますので、これを行うことで、私はかなり(静的な音を聞くことができるよ

sound = new Sound(); 
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler); 
.... 
pa.readBytes(soundBA, soundBA.length); 
if (soundBA.bytesAvailable >= (8192 * 4)) 
{ 
    sound.play(); 
} 
.... 
private function sampleDataHandler(event:SampleDataEvent):void { 

    var i:int; 
    for (i = 0; i < 8192 && soundBA.bytesAvailable > 0; i++) 
    { 
     var sample:Number = soundBA.readFloat(); 
     event.data.writeFloat(sample); 
     event.data.writeFloat(sample); 
    } 
} 

あなたは私がこのチェックを持っていることがわかるのでsoundBA.bytesAvailable >= (8192 * 4)なので、再生方法は十分なデータがあれば起動されます。

私の質問は今ですが、この音(聞こえるノイズ)は、FlashがPCMオーディオを再生できることを意味しますか?またはそれはそれがそれを再生することができないので、唯一の騒音が聞こえることを意味しますか?

=====編集======は

私はちょうど私が処理していた音声は、サンプルあたり16ビットを持っていることを発見したので、私はsoundBA.bytesAvailable >= (8192 * 2 * channels)を行うことによって、コードを少し調整し、また、Iフラッシュサウンドオブジェクトのサンプリング・レート(Hz)を設定する方法はあり範囲の値を渡す-1 +1に私のevent.data.writeFloat(sample)コールに確認しましたが、それでも音はまだ

チクチクですか?またはあなたは常に44100Hzを使用していると思っていますか?

答えて

0

デフォルトでは44kHzが正しいです。ただし、これはFlash Professional(CS5を持っている)で変更できます。

ライブラリで、サンプリングレートを変更するサウンドファイルを右クリックします。 [オプション]タブで、[圧縮]を[デフォルト]から別の形式に変更します(mp3にはサンプリングレートオプションはありませんが、その他のオプションはあります)。ここでサンプリングレートを変更できます。 [OK]をクリックして保存します。

コード内メソッドについては、方法があるかどうかわかりません。他の人がコードでそれを行う方法を知っている場合は、投稿してください。

関連する問題