了解静态视频流

Understanding static video streaming

让我们以 video I found 为例并打开一个网络选项卡。

如您所见,这是一个相当大的视频 (150mb)。我不希望它被完全下载,所以浏览器要求服务器获取 pertial 内容。服务器以 206 状态响应并发送请求的数据量。这很清楚。但是我不明白第一个请求。

Request URL: http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
Request Method: GET
Remote Address: 173.194.73.128:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7

服务器响应是:

Status Code: 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: origin, range
Cache-Control: public, max-age=3600
Connection: keep-alive
Content-Length: 158008374
Content-Type: video/mp4

它说内容长度是158008374字节(150mb)。什么?我不觉得我只是下载了150mb的数据。发生了什么?

当浏览器开始播放视频时,它对文件结构或大小一无所知。所以它开始下载。一旦它发现它是一个大文件,并且有足够的信息知道它也可以跳过哪里,它就会关闭连接。