2011-11-18 9 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没有采样率选项,但其他格式为。)您可以在此更改采样率。点击“确定”保存。

至于代码中的方法,我不知道是否有一种方法。如果其他人知道如何在代码中执行该操作,请将其发布。