Javascript HTML5视频正在下载';两次';无缘无故

Javascript HTML5视频正在下载';两次';无缘无故,javascript,html5-video,video.js,Javascript,Html5 Video,Video.js,我只是想知道为什么有时候浏览器需要在播放HTML5视频之前调用它两次。这是正常的还是实际上是一个bug?引擎盖下发生了什么 我不确定我的问题是否特别容易理解,为了帮助我解释,我从主页上截取了一个屏幕截图,打开了网络面板。请退房。同样的情况也发生在这个由苹果制作的著名页面上,顺便说一句,该页面没有为视频使用任何javascript库。我正在谷歌Chrome/Windows上测试它 谢谢 Iz许多媒体文件在文件末尾都有某种结构,定义了原子或其他媒体元数据的位置,如持续时间、开始字节偏移量、编解码器、

我只是想知道为什么有时候浏览器需要在播放HTML5视频之前调用它两次。这是正常的还是实际上是一个bug?引擎盖下发生了什么

我不确定我的问题是否特别容易理解,为了帮助我解释,我从主页上截取了一个屏幕截图,打开了网络面板。请退房。同样的情况也发生在这个由苹果制作的著名页面上,顺便说一句,该页面没有为视频使用任何javascript库。我正在谷歌Chrome/Windows上测试它

谢谢


Iz

许多媒体文件在文件末尾都有某种结构,定义了原子或其他媒体元数据的位置,如持续时间、开始字节偏移量、编解码器、比特率等。一些文件类型(如mp4容器)可以“提示”将此数据移到文件开头。历史上,此信息连接到媒体文件的结尾,因为许多值(持续时间)直到视频编码完成后才知道。

第一个调用是预加载。这允许视频在用户单击“播放”按钮(假设它不是自动播放)后立即播放,或者在其他情况下尽早播放。下载元数据和视频的前几秒钟后,将中止


第二个调用实际上获取整个文件。浏览器将尝试仅请求尚未请求的部分,但服务器需要配置为允许该请求。

它清楚地表示“部分内容”,因此我假设它首先获取一些数据,例如视频编解码器,以检查是否支持该编解码器,或者是否需要尝试其他源/回退,如果成功,则获取整个视频。显然这只是猜测。是的,@Fabricio Matté是对的。Chrome会发出范围请求,有时会对文件的后续块发出范围请求。后续请求通常从同一网络请求加载,但会多次列出。你可以用数据包嗅探器来验证。谢谢@Brad,我今天学到了一些新东西<代码>=]