我想非常精确地控制声音的开始,但它似乎在开始声音之前等待了一些东西。这就像播放器中有一个内部时钟,大约以43fps的速度运行,并且声音只能在该时钟的节拍上开始。
不管项目的帧率是多少,或者运行在哪台计算机上,它总是43fps(至少对我来说是这样)。
要测试这一点,请启动一个声音,然后每一帧都将channel.position与预期位置进行比较,例如getTimer() - startTime。区别总是(对我来说) 23或46 mS。
我发现了一个关于position属性的问题here,它以自己的速率更新,在我的例子中恰好是43fps,大约每23 fps更新一次。
有没有办法既可以控制声音的播放开始,又可以知道位置属性何时更新?如果有人能解释Flash到底在做什么,什么时候做,那就太好了!
我真的很感谢所有的输入,这太奇怪了。
编辑:我注意到position属性只包含23.219954648526077的倍数,例如46.439909297052154,69.65986394557822?如果你在创建一个通道后直接询问,它包含了我刚刚设置的数字,但在下一帧中,它只是这些特定的数字。知道是谁吗?
发布于 2010-09-28 01:37:27
23.219954648526077毫秒间隔来自内部使用1024个样本作为缓冲器大小和44100 hz采样率的闪存。
23.219954648526077毫秒= (1024个样本/每秒44100个样本)* (1000毫秒/秒)
如果需要采样精度,可以尝试使用SampleDataEvent直接输出采样,使用Sound.extract访问加载的声音采样。如果你想让多个声音相互同步,它会有帮助,但如果你想同步音频和显示帧或视频,就没有用了。
https://stackoverflow.com/questions/3798306
复制相似问题