我想非常精确地控制声音的开始,但似乎在开始声音之前等待某事。这就像播放器中有一个内部时钟,运行速度约为43 fps,声音只能从该时钟的节拍开始。
无论项目的帧率是什么,或者它取决于哪台计算机,它总是43 fps(至少对我而言)。
为了测试这一点,开始一个声音,然后每个帧比较channel.position与预期的位置,例如, getTimer() - startTime。差异总是(对我来说)23或46 mS。
我找到了一个问题here,它讨论了位置属性,它以自己的速率更新,在我的情况下恰好是43 fps,大约每23 mS。
有没有办法控制声音的播放开始并知道位置属性何时更新?如果有人能解释Flash实际上在做什么以及何时做,那就太棒了!
我真的很感激所有的输入,这太奇怪了。
编辑:我注意到position属性只包含23.219954648526077的倍数,例如46.439909297052154,66.65986394557822?如果您在创建频道后直接询问它包含我刚刚设置的号码,但在下一帧中只包含这些特定号码。有人在想吗?
答案 0 :(得分:1)
23.219954648526077 ms间隔来自内部闪存,使用1024个样本作为缓冲区大小和44100 hz采样率。
23.219954648526077 ms =(1024个样本/每秒44100个样本)*(每秒1000毫秒)
如果您需要样本准确度,可以尝试使用SampleDataEvent直接输出样本,Sound.extract来访问加载的声音样本。如果您希望彼此同步多个声音,这将有所帮助,但如果您正在将音频与显示帧或视频同步,则会有所帮助。