Google Chrome音频寻求和缓冲

时间:2015-09-08 12:32:23

标签: javascript html5 google-chrome audio

尝试播放MP3文件时,Google Chrome会首先将音频文件从开始加载到搜索点,然后才从搜索点开始播放。如何告诉Chrome禁用缓冲无用的音频文件并立即从搜索点播放音频,而不是从头开始缓冲?

我在根audio中有一个body标记。除id之外没有任何属性 - 没有srctype等 - 完全为空的audio标记。

我有很多players(Angular指令)使用这一个audio标签进行播放(因此,当我导航到其他网站的页面时,音频不会停止)。

每个player都有自己的搜索栏 - 我可以点击搜索栏随时启动音频。在所有最新的浏览器中立即开始播放音频......好吧,不是在Chrome中 - Chrome首先从开始到预定点预加载丢失的音频块,然后播放音频。

我已经提出了一些请求的屏幕截图 - Chrome和FF(这里每位玩家都设置为currentTime,可以在搜索栏中的25:01分钟播放):

Chrome首次获取GET请求(当audio标记获得src属性时): Chrome first GET request

Chrome第二次GET请求(当audio标记将currentTime设置为25分钟时): Chrome second GET request

Firefox第一个GET标头(当audio标签获得src属性时): Firefox first GET request

Firefox第二次GET请求(当audio标记将currentTime设置为25分钟时): Firefox second GET request

因此,当audio获得src时,它会发送第一个GET请求以加载一些元数据和其他信息。然后,由于音频currentTime更改,它会发送第二个GET请求。

默认情况下,Chrome始终会在第一个请求中发送«Range:bytes = 0-»标头,没有任何内容可以更改它。 (FF在第一次请求时发送«Range:bytes = 491520-»。

那么,我做错了什么?也许我需要从服务器响应中获得更多标题? :)

1 个答案:

答案 0 :(得分:4)

我认为这是一次Chrome回归,据我们的团队今天/昨天在最新的Chrome稳定版中所说,这已经被打破了。

如果你看一下SoundCloud它今天也有这个问题。

以前如果您在音频文件中有一个Xing标题,它会修复它并正确搜索,但它已停止工作。