【问题标题】:Chrome HTML5 video range request headers in NodejsNodejs中的Chrome HTML5视频范围请求标头
【发布时间】:2018-01-19 01:40:20
【问题描述】:

我正在使用 HTML5 视频标签对非常基本的 MP4 视频流进行一些试验。

当我转到带有视频标签的页面时,查看从客户端(Chrome 浏览器)发送的标头时,我看到三个不同的范围标头发送到服务器:

range: 'bytes=0-'
range: 'bytes=4489216-'
range: 'bytes=1180401664-'

我想知道为什么 Chrome 没有指定结束范围标头来伴随开始范围,看起来 Chrome 正在尝试加载整个文件,然后在文件中更远的地方询问数据,然后询问数据非常接近文件的结尾。

当查看网络选项卡中的 Chrome 开发人员工具时,我发现它在我到达带有视频标签的页面后立即下载了大约 3 MB,然后是大约 20 kB,然后在靠近文件的最后。

流式传输和扫描视频似乎确实像这样工作,但我主要想知道为什么 Chrome 没有指定结束范围,以及为什么它在访问视频时下载视频中看似随机的点和大小页面。

谢谢!

【问题讨论】:

    标签: node.js video-streaming html5-video


    【解决方案1】:

    没有结束,因为它不知道结束。 Mp4 文件被分成“盒子”。每个盒子的前 4 个字节是盒子的大小。所以播放器知道下一个盒子从哪里开始但它不知道下一个盒子的大小,直到它开始下载它。所以它会跳过文件,直到找到它需要的东西。如果浏览器决定它不想要范围的其余部分,它总是可以关闭套接字。

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2015-10-28
      • 2021-07-07
      • 1970-01-01
      • 2017-05-22
      • 2012-07-31
      • 2013-08-13
      • 2014-10-11
      • 1970-01-01
      相关资源
      最近更新 更多