加载& lt; audio>Firefox进入readyState 2, Chrome进入readyState 4

Loading <audio> source - Firefox gets into readyState 2 and Chrome into 4

本文关键字:进入 readyState Chrome Firefox lt audio 加载      更新时间:2023-09-26

我正在尝试将HTMLAudioElement连接到Web音频API (MediaElementAudioSourceNode)。我先设置src,然后再呼叫load()

现在,而在铬这让我从readyState 0 (HAVE_NOTHING)到4 (HAVE_ENOUGH_DATA),所以后续的play()成功。但是在Firefox中,我只能看到2 (HAVE_CURRENT_DATA),其他什么都没有。

我错过了关键的一步吗?


编辑:这是我的调试信息:

| | FF Init | FF Load | Ch Init | Ch Load | |readyState | 0 | 2 | 0 | 4 | |preload | | | auto | auto | |duration | NaN | 186.45 | NaN | 186.44 | |error | null | null | null | null | |networkState | 0 | 1 | 0 | 1 |

至少从这个列表中,初始数据的唯一区别是Chrome中的preload值。

所以在创建媒体元素后添加preload = "auto"(以匹配它在Chromium中的默认值)也可以在Firefox中工作。

不确定这是否与您的问题直接有关,但由于我在研究另一个问题时发现了您的问题,我会添加我的两分钱来帮助其他人谁来到这里与HAVE_CURRENT_DATA相关的Firefox问题…:

发现,显然火狐重置 readyState到HAVE_CURRENT_DATA后,它已经播放了音频,即在"oncanplaythrough"它是"have_足够的数据",但之后播放它回到了"HAVE_CURRENT_DATA"-也许是因为没有更多的帧播放?你仍然可以通过另一个调用"play"来播放音频,只是readyState有点混乱。

所以,在重复使用音频时要小心。