1

Flash 中是否发生了一些变化?不久前,我为我正在开发的一个网站制作了一个音乐可视化工具。它使用 SoundMixer.computeSpectrum 来获取音频中所有频率的电平。它对我来说非常有用,它甚至可以播放页面上其他 Flash 对象的音频,这对我来说效果很好,并且省去了我试图以某种方式将音频从各种播放器对象传输到可视化器的麻烦。

好吧,现在它不再起作用了。自从我上次测试以来,我已经对网站进行了更改,但我认为这不是问题。即使在同一个 Flash 实例中,可视化器也不再对任何音频做出任何响应。但是当我在可视化器中播放音频时,在任何浏览器中,帧率都会明显下降。如果我从使用 Flash Player 9 的 Flash Professional CS3 预览 swf,它可以正常工作,但对于浏览器中的 Flash 11.3 则不能。有人可以解释发生了什么变化以及我需要做什么才能使事情正常进行吗?

更新:

以下是一些相关的代码。

var ba:ByteArray = new ByteArray();

addEventListener(Event.ENTER_FRAME,timerHandler);

function timerHandler(event:Event):void {   
   SoundMixer.computeSpectrum(ba, true);

}

我还将 readFloat 和 writeFloat 与字节数组一起使用。当然还有很多其他代码,但它们在 Flash 9 中都可以正常工作。

4

2 回答 2

1

我遇到了同样的问题,正在努力解决它。

我有参考资料,你介意看看那些吗?

Adobe 论坛:SoundMixer.computeSpectrum () 无法工作http://forums.adobe.com/thread/67089

Kirupa 论坛:时间线上的声音:SoundMixer.computeSpectrum http://www.kirupa.com/forum/showthread.php?329632-Sound-on-timeline-SoundMixer-computeSpectrum

编辑于 2012 年 9 月 30 日

当您声明Sound实例化时,如果您已将其编码为:

var sound:Sound = new Sound(new URLRequest("url"));

其中 sound 是Sound实例的名称,而 url 是您正在加载的声音的 URL,将其更改为:

var sound:Sound = new Sound(new URLRequest("url"), new SoundLoaderContext(0, true));

那应该行得通。

于 2012-09-07T14:12:00.987 回答
1

从 flash v11.3 开始存在一个缺陷,导致 computeSpectrum() 返回不完整的空数据。它尚未在最新的 Flash Player 版本中得到修复(在撰写本文时为 v11.5)。

如果您将 Flash Player 降级到 v11.2,您将看到您的可视化效果与以前一样。

https://bugbase.adobe.com/index.cfm?event=bug&id=3222042

请对此错误投票,以便 adobe 修复它!!!

---编辑--- 现在从 Flash 播放器 11.7 开始修复!

于 2012-11-28T16:42:03.533 回答