我想代表来自HTMLMediaElement
. 它的定义特征是:
- 它的值表示为
Double
- 可以随时使用
getCurrentTime :: IO Double
(部分应用于给定的HTMLMediaElement
)查询它 - 它可能会不断变化(无论何时播放媒体播放器)
我最初的计划是将其表示为每次观察时都会Behavior t Double
重新运行IO Double
,但效果并不好。
我尝试过的事情:
- 如本问题的解决方法部分所述,使用
Behavior
以固定频率在引擎盖下刺激的 - 传递一个
Event t ()
表示所需采样频率的,并返回一个Event t Double
包含重合时间戳的
我也不喜欢——第一个要么将行为(抱歉)与我的特定用例(如果我使用我将在我的应用程序中使用的最终采样频率)过度结合,要么看起来很浪费(如果我使用某些东西)就像创建时的 1 kHz 采样Behavior
,然后在应用程序端以 60 Hz 采样),如果您想以不同的采样率对时间戳做不止一件事,第二个是非常不灵活的。