我正在尝试使用找到的here技术播放声音(通过使用extract()从原始采集的原始声音数据采样来播放声音),区别在于mp3声音嵌入在swf,没有外部装载。这是我的代码:
var soundBytes:ByteArray = new ByteArray();
var mp3sound:Sound = Sound(new Sound1_design()); // this is the embedded sound
mp3sound.extract(soundBytes, int.MAX_VALUE);
soundBytes.position = 0;
var rawSound:Sound = new Sound();
rawSound.addEventListener(SampleDataEvent.SAMPLE_DATA, playbackSampleHandler);
rawSound.play();
function playbackSampleHandler(event:SampleDataEvent):void
{
for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++)
{
var left:Number = soundBytes.readFloat();
var right:Number = soundBytes.readFloat();
event.data.writeFloat(left);
event.data.writeFloat(right);
}
}
这在某种程度上起作用,除了产生的声音失真(它有一种金属环)。我做错了什么?
答案 0 :(得分:1)
我尝试通过mxmlc和Flash CS5进行编译,它运行良好。我在[Embed(source="..")]
中使用128kbps和320kbps mp3测试了它。
可能还有一些影响声音输出的其他设置,但很难说。您在SWF中使用的帧速率是否很低?也许某些Flash Player设置很奇怪,就像Lotus在评论中提到的那样。