Nodejs

时间:2018-01-19 01:40:21

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

我正在尝试使用HTML5视频标记尝试非常基本的MP4视频流。

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

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

我想知道为什么Chrome没有为起始范围指定一个结束范围标题,看起来Chrome正在尝试加载整个文件,然后在文件中的某处稍微询问数据,然后询问数据非常接近文件的末尾。

当查看网络标签中的Chrome开发者工具时,我看到它一旦我到达带有视频标签的页面就会立即下载大约3 MB,然后大约20 kB,然后再靠近大约3 MB文件的最后一部分。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

没有尽头,因为它不知道结局。 Mp4文件分为“框”。每个框的前4个字节是框大小。因此,玩家知道下一个框开始的位置但是它确实知道下一个框大小,直到它开始下载它。所以它跳过文件直到找到它需要的东西。如果浏览器决定不想要其余的范围,浏览器总是可以关闭套接字。