尝试播放MP3文件时,Google Chrome会首先将音频文件从开始加载到搜索点,然后才从搜索点开始播放。如何告诉Chrome禁用缓冲无用的音频文件并立即从搜索点播放音频,而不是从头开始缓冲?
我在根audio
中有一个body
标记。除id
之外没有任何属性 - 没有src
,type
等 - 完全为空的audio
标记。
我有很多players
(Angular指令)使用这一个audio
标签进行播放(因此,当我导航到其他网站的页面时,音频不会停止)。
每个player
都有自己的搜索栏 - 我可以点击搜索栏随时启动音频。在所有最新的浏览器中立即开始播放音频......好吧,不是在Chrome中 - Chrome首先从开始到预定点预加载丢失的音频块,然后播放音频。
我已经提出了一些请求的屏幕截图 - Chrome和FF(这里每位玩家都设置为currentTime
,可以在搜索栏中的25:01分钟播放):
Chrome首次获取GET请求(当audio
标记获得src
属性时):
Chrome第二次GET请求(当audio
标记将currentTime
设置为25分钟时):
Firefox第一个GET标头(当audio
标签获得src
属性时):
Firefox第二次GET请求(当audio
标记将currentTime
设置为25分钟时):
因此,当audio
获得src
时,它会发送第一个GET请求以加载一些元数据和其他信息。然后,由于音频currentTime
更改,它会发送第二个GET请求。
默认情况下,Chrome始终会在第一个请求中发送«Range:bytes = 0-»标头,没有任何内容可以更改它。 (FF在第一次请求时发送«Range:bytes = 491520-»。
那么,我做错了什么?也许我需要从服务器响应中获得更多标题? :)
答案 0 :(得分:4)
我认为这是一次Chrome回归,据我们的团队今天/昨天在最新的Chrome稳定版中所说,这已经被打破了。
如果你看一下SoundCloud它今天也有这个问题。
以前如果您在音频文件中有一个Xing标题,它会修复它并正确搜索,但它已停止工作。