用于循环声音闪光的首选方法as3

Bef*_*rem 7 flash audio actionscript-3

我在flash AS3中循环声音时遇到了一些问题,因为当我告诉声音循环时,我会在音频结束/开始时稍微延迟.

音频被正确剪辑,并且将在车库乐队中无间隙地播放.

我知道闪存中存在声音问题,编码错误以及SOUND_COMPLETE事件的不准确性(Adobe应该对这些问题的处理感到尴尬)

我试图在Sound类的play方法中使用内置循环参数,并对SOUND_COMPLETE事件做出反应,但两者都会导致延迟.

但有没有人想出一种技术来循环声音而没有任何明显的差距?

Bra*_*all 7

如果可以使用Flash Player 10,最可靠的方法是使用新的SampleDataEvent.SAMPLE_DATA事件.

具体来说,您要做的是首先实例化您想要的声音,然后使用新的提取方法将声音转换为ByteArray中编码的原始PCM数据.然后,您可以创建一个新的Sound对象,并设置为侦听它的SampleDataEvent.SAMPLE_DATA事件.当调用该事件时,您将从ByteArray推送2-8k(较低的数量减少延迟,但会增加可听到的伪像的可能性).你只需要确保在运行ByteArray结束时,你只需循环回到开头即可.

此方法可确保您完全无间隙播放.


gra*_*ukt 5

由于格式的工作方式,mp3的无缝循环并不是微不足道的.简化一点; 声音适合多个帧,这个数字不能任意选择,而是需要一些填充(带静音).Mp3无法存储添加了多少填充,因此一旦文件被编码,此信息就会丢失.

Flash IDE通过嵌入这些元数据来解决这个问题,你也可以.您只需要知道编码器添加了多少延迟.

安德烈米歇尔在他的博客上解释这种方式比我更好.