2011-11-18 8 views
1

PCM原始數據,我一直在尋找了很多閃光的玩RAW PCM音頻數據的能力,因爲我有RAW PCM音頻作爲ByteArray的,我只是想,如果閃光燈可以真正發揮它,一些文章說是的,有些沒有,請注意,RAW PCM音頻來自現場套接字流玩實況流套接字的使用Flash

截至目前我所試過的是做一個空的聲音對象,然後調用它的播放方法然後處理它的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)調整一下代碼,也是我確信到的範圍內的值-1到+1傳遞給我的電話event.data.writeFloat(sample)但仍然聲音依然沙啞

有什麼辦法來設置閃光燈聲音對象的採樣率(赫茲)?或者它總是認爲你正在使用44100Hz?

回答

0

你是在44kHz的正確的是默認的。但是,您可以在Flash Professional中更改此設置(我有CS5)。

在你的庫中,右鍵點擊你想改變採樣率的聲音文件。在「選項」選項卡上,將「壓縮」從「默認」更改爲另一種格式(mp3沒有采樣率選項,但其他格式爲。)您可以在此更改採樣率。點擊「確定」保存。

至於代碼中的方法,我不知道是否有一種方法。如果其他人知道如何在代碼中執行該操作,請將其發佈。