我会试着描述我在做什么。
我目前有 2 个 HTML5 音频元素,我们称它们为 Master 和 Slave。
它们都加载完全相同的媒体文件,但从属设备默认情况下将其音频静音。
每个玩家都可以被对方控制(暂停、播放、擦洗等)。
每个播放器都有自己的自定义样式,并从外部 JSON 文件接收持续时间数据(因此两者都不依赖于audio.duration获取和计算播放器中其他功能的持续时间,例如擦洗条)。
一切都很完美,但明显的缺点是每首歌曲的音频文件都加载了两次。(音频文件由 PHP 以小块的形式提供——其中没有指向 .mp3 文件的直接链接audio.src——而是指向服务器端脚本的链接,该脚本需要对每个初始请求进行唯一身份验证,因此音频文件不是t 被缓存 - 因此是双重下载)。
我实际上不需要在静音播放器上使用 HTML5 音频元素,除了获取曲目的 currentTime 之外,有什么方法可以“伪造”音频元素吗?也许通过为轨道的长度运行 setTimeout 或类似的东西?
我只需要一些可以模仿audio.currentTimeHTML5 音频元素吐出的值来更新进度(擦洗)栏的东西,但我真的不知道从哪里开始,或者是否有可能?
欢迎任何建议,非常感谢提前。
编辑 - 为清楚起见,我的网站的工作方式类似于Soundcloud的工作方式。ie - 屏幕上渲染的许多玩家(奴隶),所有这些都可以单独播放,所有这些也可以由页脚玩家(主人)控制。我网站上的所有内容(除了包含主播放器的元素)都是使用 Ajax 动态加载的。