我在AS3中有一個可用的麥克錄製腳本,我已經能夠成功地使用AMF將.wav文件保存到服務器。這些文件在沒有奇怪效果的任何音頻播放器中播放都很好。AS3麥克風錄製/保存工作,閃速PCM播放雙倍速度
僅供參考,下面是我在做什麼來捕捉麥克風的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作爲聲音:一個叫做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);
}
}
音頻文件以雙倍速播放!我檢查了記錄比特率等,我非常肯定這些都是正確的,我試着改變緩衝區大小和其他我能想到的數字。它可能是單聲道還是立體聲?
希望我在這裏已經夠清楚了,謝謝!
你應該堅持 「動作-3」 標記爲AS3的問題。這是常用的。 – ktdrv 2010-04-29 01:10:22