AS3には、AMFを介して.wavファイルをサーバーに保存するために正常に使用できるマイク録音スクリプトがあります。これらのファイルは、どのオーディオプレーヤーでも問題なく再生され、奇妙な影響はありません。
参考までに、マイクのByteArrayをキャプチャするために私が行っていることは次のとおりです:( AudioRecorderと呼ばれるクラス内で)
public function startRecording():void {
_rawData = new ByteArray();
_microphone
.addEventListener(SampleDataEvent.SAMPLE_DATA,_samplesCaptured, false, 0, true);
}
private function _samplesCaptured(e:SampleDataEvent):void {
_rawData.writeBytes(e.data);
}
これは問題なく動作します。記録が完了したら、_rawData変数を取得して、WavWriterクラスなどで実行できます。
ただし、これと同じByteArrayを、adobeクックブックから採用した次のコードを使用してサウンドとして実行すると、(WavPlayerというクラス内で)
public function playSound(data:ByteArray):void {
_wavData = data;
_wavData.position = 0;
_sound.addEventListener(SampleDataEvent.SAMPLE_DATA, _playSoundHandler);
_channel = _sound.play();
_channel
.addEventListener(Event.SOUND_COMPLETE, _onPlaybackComplete, false, 0, true);
}
private function _playSoundHandler(e:SampleDataEvent):void {
if(_wavData.bytesAvailable <= 0) return;
for(var i:int = 0; i < 8192; i++) {
var sample:Number = 0;
if(_wavData.bytesAvailable > 0) sample = _wavData.readFloat();
e.data.writeFloat(sample);
}
}
オーディオファイルは2倍の速度で再生されます!記録ビットレートなどを確認し、それらがすべて正しいことを確認し、バッファサイズやその他の考えられる数値を変更してみました。それはモノラル対ステレオのものでしょうか?
私がここで十分に明確であったことを願っています、ありがとう!